---
title: StringProtocol
framework: swift
role: symbol
role_heading: Protocol
path: swift/stringprotocol
---

# StringProtocol

A type that can represent a string as a collection of characters.

## Declaration

```swift
protocol StringProtocol : BidirectionalCollection, Comparable, ExpressibleByStringInterpolation, Hashable, LosslessStringConvertible, TextOutputStream, TextOutputStreamable where Self.Element == Character, Self.Index == String.Index, Self.StringInterpolation == DefaultStringInterpolation, Self.SubSequence : StringProtocol
```

## Overview

Overview Do not declare new conformances to StringProtocol. Only the String and Substring types in the standard library are valid conforming types.

## Topics

### Operators

- [!=(_:_:)](swift/stringprotocol/!=(_:_:).md)

### Associated Types

- [SubSequence](swift/stringprotocol/subsequence.md)
- [UTF16View](swift/stringprotocol/utf16view.md)
- [UTF8View](swift/stringprotocol/utf8view.md)
- [UnicodeScalarView](swift/stringprotocol/unicodescalarview.md)

### Initializers

- [init(cString:)](swift/stringprotocol/init(cstring:).md)
- [init(decoding:as:)](swift/stringprotocol/init(decoding:as:).md)
- [init(decodingCString:as:)](swift/stringprotocol/init(decodingcstring:as:).md)

### Instance Properties

- [capitalized](swift/stringprotocol/capitalized.md)
- [decomposedStringWithCanonicalMapping](swift/stringprotocol/decomposedstringwithcanonicalmapping.md)
- [decomposedStringWithCompatibilityMapping](swift/stringprotocol/decomposedstringwithcompatibilitymapping.md)
- [fastestEncoding](swift/stringprotocol/fastestencoding.md)
- [hash](swift/stringprotocol/hash.md)
- [localizedCapitalized](swift/stringprotocol/localizedcapitalized.md)
- [localizedLowercase](swift/stringprotocol/localizedlowercase.md)
- [localizedUppercase](swift/stringprotocol/localizeduppercase.md)
- [precomposedStringWithCanonicalMapping](swift/stringprotocol/precomposedstringwithcanonicalmapping.md)
- [precomposedStringWithCompatibilityMapping](swift/stringprotocol/precomposedstringwithcompatibilitymapping.md)
- [removingPercentEncoding](swift/stringprotocol/removingpercentencoding.md)
- [smallestEncoding](swift/stringprotocol/smallestencoding.md)
- [unicodeScalars](swift/stringprotocol/unicodescalars.md)
- [utf16](swift/stringprotocol/utf16.md)
- [utf8](swift/stringprotocol/utf8.md)

### Instance Methods

- [addingPercentEncoding(withAllowedCharacters:)](swift/stringprotocol/addingpercentencoding(withallowedcharacters:).md)
- [appending(_:)](swift/stringprotocol/appending(_:).md)
- [appendingFormat(_:_:)](swift/stringprotocol/appendingformat(_:_:).md)
- [applyingTransform(_:reverse:)](swift/stringprotocol/applyingtransform(_:reverse:).md)
- [cString(using:)](swift/stringprotocol/cstring(using:).md)
- [canBeConverted(to:)](swift/stringprotocol/canbeconverted(to:).md)
- [capitalized(with:)](swift/stringprotocol/capitalized(with:).md)
- [caseInsensitiveCompare(_:)](swift/stringprotocol/caseinsensitivecompare(_:).md)
- [commonPrefix(with:options:)](swift/stringprotocol/commonprefix(with:options:).md)
- [compare(_:options:range:locale:)](swift/stringprotocol/compare(_:options:range:locale:).md)
- [completePath(into:caseSensitive:matchesInto:filterTypes:)](swift/stringprotocol/completepath(into:casesensitive:matchesinto:filtertypes:).md)
- [components(separatedBy:)](swift/stringprotocol/components(separatedby:)-4j26n.md)
- [components(separatedBy:)](swift/stringprotocol/components(separatedby:)-8gl9t.md)
- [contains(_:)](swift/stringprotocol/contains(_:)-40kbf.md)
- [contains(_:)](swift/stringprotocol/contains(_:)-78f5t.md)
- [contains(_:)](swift/stringprotocol/contains(_:)-78p35.md)
- [data(using:allowLossyConversion:)](swift/stringprotocol/data(using:allowlossyconversion:).md)
- [dataDetectorMatches(_:options:)](swift/stringprotocol/datadetectormatches(_:options:).md)
- [enumerateLines(invoking:)](swift/stringprotocol/enumeratelines(invoking:).md)
- [enumerateLinguisticTags(in:scheme:options:orthography:invoking:)](swift/stringprotocol/enumeratelinguistictags(in:scheme:options:orthography:invoking:).md)
- [enumerateSubstrings(in:options:_:)](swift/stringprotocol/enumeratesubstrings(in:options:_:).md)
- [folding(options:locale:)](swift/stringprotocol/folding(options:locale:).md)
- [getBytes(_:maxLength:usedLength:encoding:options:range:remaining:)](swift/stringprotocol/getbytes(_:maxlength:usedlength:encoding:options:range:remaining:).md)
- [getCString(_:maxLength:encoding:)](swift/stringprotocol/getcstring(_:maxlength:encoding:).md)
- [getLineStart(_:end:contentsEnd:for:)](swift/stringprotocol/getlinestart(_:end:contentsend:for:).md)
- [getParagraphStart(_:end:contentsEnd:for:)](swift/stringprotocol/getparagraphstart(_:end:contentsend:for:).md)
- [hasPrefix(_:)](swift/stringprotocol/hasprefix(_:).md)
- [hasSuffix(_:)](swift/stringprotocol/hassuffix(_:).md)
- [lengthOfBytes(using:)](swift/stringprotocol/lengthofbytes(using:).md)
- [lineRange(for:)](swift/stringprotocol/linerange(for:).md)
- [linguisticTags(in:scheme:options:orthography:tokenRanges:)](swift/stringprotocol/linguistictags(in:scheme:options:orthography:tokenranges:).md)
- [localizedCaseInsensitiveCompare(_:)](swift/stringprotocol/localizedcaseinsensitivecompare(_:).md)
- [localizedCaseInsensitiveContains(_:)](swift/stringprotocol/localizedcaseinsensitivecontains(_:).md)
- [localizedCompare(_:)](swift/stringprotocol/localizedcompare(_:).md)
- [localizedStandardCompare(_:)](swift/stringprotocol/localizedstandardcompare(_:).md)
- [localizedStandardContains(_:)](swift/stringprotocol/localizedstandardcontains(_:).md)
- [localizedStandardRange(of:)](swift/stringprotocol/localizedstandardrange(of:).md)
- [lowercased()](swift/stringprotocol/lowercased().md)
- [lowercased(with:)](swift/stringprotocol/lowercased(with:).md)
- [maximumLengthOfBytes(using:)](swift/stringprotocol/maximumlengthofbytes(using:).md)
- [padding(toLength:withPad:startingAt:)](swift/stringprotocol/padding(tolength:withpad:startingat:).md)
- [paragraphRange(for:)](swift/stringprotocol/paragraphrange(for:).md)
- [propertyList()](swift/stringprotocol/propertylist().md)
- [propertyListFromStringsFileFormat()](swift/stringprotocol/propertylistfromstringsfileformat().md)
- [range(of:options:range:locale:)](swift/stringprotocol/range(of:options:range:locale:).md)
- [rangeOfCharacter(from:options:range:)](swift/stringprotocol/rangeofcharacter(from:options:range:).md)
- [rangeOfComposedCharacterSequence(at:)](swift/stringprotocol/rangeofcomposedcharactersequence(at:).md)
- [rangeOfComposedCharacterSequences(for:)](swift/stringprotocol/rangeofcomposedcharactersequences(for:).md)
- [replacingCharacters(in:with:)](swift/stringprotocol/replacingcharacters(in:with:).md)
- [replacingOccurrences(of:with:options:range:)](swift/stringprotocol/replacingoccurrences(of:with:options:range:).md)
- [split(separator:maxSplits:omittingEmptySubsequences:)](swift/stringprotocol/split(separator:maxsplits:omittingemptysubsequences:)-7mfus.md)
- [split(separator:maxSplits:omittingEmptySubsequences:)](swift/stringprotocol/split(separator:maxsplits:omittingemptysubsequences:)-8wzc1.md)
- [substring(from:)](swift/stringprotocol/substring(from:).md)
- [substring(to:)](swift/stringprotocol/substring(to:).md)
- [substring(with:)](swift/stringprotocol/substring(with:).md)
- [trimmingCharacters(in:)](swift/stringprotocol/trimmingcharacters(in:).md)
- [uppercased()](swift/stringprotocol/uppercased().md)
- [uppercased(with:)](swift/stringprotocol/uppercased(with:).md)
- [withCString(_:)](swift/stringprotocol/withcstring(_:).md)
- [withCString(encodedAs:_:)](swift/stringprotocol/withcstring(encodedas:_:).md)
- [write(to:atomically:encoding:)](swift/stringprotocol/write(to:atomically:encoding:).md)
- [write(toFile:atomically:encoding:)](swift/stringprotocol/write(tofile:atomically:encoding:).md)

## Relationships

### Inherits From

- [BidirectionalCollection](swift/bidirectionalcollection.md)
- [Collection](swift/collection.md)
- [Comparable](swift/comparable.md)
- [CustomStringConvertible](swift/customstringconvertible.md)
- [Equatable](swift/equatable.md)
- [ExpressibleByExtendedGraphemeClusterLiteral](swift/expressiblebyextendedgraphemeclusterliteral.md)
- [ExpressibleByStringInterpolation](swift/expressiblebystringinterpolation.md)
- [ExpressibleByStringLiteral](swift/expressiblebystringliteral.md)
- [ExpressibleByUnicodeScalarLiteral](swift/expressiblebyunicodescalarliteral.md)
- [Hashable](swift/hashable.md)
- [LosslessStringConvertible](swift/losslessstringconvertible.md)
- [Sequence](swift/sequence.md)
- [TextOutputStream](swift/textoutputstream.md)
- [TextOutputStreamable](swift/textoutputstreamable.md)

### Conforming Types

- [String](swift/string.md)
- [Substring](swift/substring.md)

## See Also

### Related String Types

- [Substring](swift/substring.md)
- [String.Index](swift/string/index.md)
- [String.UnicodeScalarView](swift/string/unicodescalarview.md)
- [String.UTF16View](swift/string/utf16view.md)
- [String.UTF8View](swift/string/utf8view.md)
- [String.Iterator](swift/string/iterator.md)
- [String.Encoding](swift/string/encoding.md)
