String length. A Swift string contains a certain number of characters. Chars use varying amounts of memory. So we must access our string through char indexes.
With count, a property, we get the number of characters. And EndIndex returns the index after the final index in a string. We can access chars based on startIndex and endIndex.
Count. To get the length of a string we can use the count property. We can test this value against an Int. Here we detect a string with 5 chars.
let platform = "Apple"// Get length of string.
let count = platform.count
// See if string is 5 characters long.
if count == 5 {
print(true)
}
// Print count.
print(count)true
5
EndIndex. Here we introduce a constant string with contents "dotnetperls." It has 11 characters. The endIndex property equals the value 11. We print it out.
Next We use a while-loop on the string's characters. We begin at startIndex (this is like zero but a string index).
Then We terminate the loop when the index equals the endIndex. So we continue until the last char index.
Info We use the index() func to increment the current index through the string. We cannot just increment it like an Int.
Finally We print out the individual characters in the string. We must access a string by an index, not an Int.
let name = "dotnetperls"// Get the length of the string.
let length = name.endIndex
print("Length = \(length)")
// Loop over all characters in a string.// ... We start at startIndex.// ... And proceed until the endIndex (the length).
var temp = name.startIndex;
var i = 0;
while (temp != name.endIndex) {
print("\(i) = \(name[temp])")
temp = name.index(after: temp);
i += 1;
}Length = Index(_base: Swift.String.UnicodeScalarView.Index(
_position: 11), _countUTF16: 0)
0 = d
1 = o
2 = t
3 = n
4 = e
5 = t
6 = p
7 = e
8 = r
9 = l
10 = s
Get char based on length. This example uses the endIndex to access the last char in a string. It calls index() with "before" on endIndex which just reduces the index value by 1 char.
Then It invokes remove() to eliminate the final char. The string "abcd" is now just "abc."
var value = "abcd"
print(value)
// The last index is before endIndex.
let lastCharIndex = value.index(before: value.endIndex)
// Remove last char.
value.remove(at: lastCharIndex)
print(value)abcd
abc
Loop, reverse order. Sometimes we want to loop over a string's chars in reverse order. Here we use endIndex and call index() with "before" to get the last character's index.
Then We print all chars in reverse order. We continue calling index() until no more may exist, and then we exit the loop.
let name = "swift"// Begin at the last valid index.// ... This is endIndex's predecessor.
var index = name.index(before: name.endIndex)
while true {
print(name[index])
// Reduce index by 1 if still greater than 0.// ... Otherwise break out of loop.
if index > name.startIndex {
index = name.index(before: index)
}
else {
break
}
}t
f
i
w
s
Reduce string length. A string's length cannot be directly modified. But with a string slice expression we can truncate a string. Conceptually this reduces the length.
import Foundation
let title = "Divine Comedy"// Get index for the desired length.
let desiredLength = title.index(title.startIndex, offsetBy: 6)
// Use substring.// ... Reduce length of string and create new substring.
let truncated = title[..<desiredLength]
print(truncated)Divine
Some comments. Strings in Swift are not like strings in many other computer languages. Each char may have a different size. So we cannot treat all chars the same.
Info We must access strings with an index. This is an abstraction for accessing string data.
Tip Once we understand that chars and strings must be accessed through indexes (and never Ints), strings are more manageable in Swift.
The easiest way to get the character count in a string is by using the count property. We can also access endIndex, and index() can get the last char in a string.
Dot Net Perls is a collection of pages with code examples, which are updated to stay current. Programming is an art, and it can be learned from examples.
Donate to this site to help offset the costs of running the server. Sites like this will cease to exist if there is no financial support for them.
Sam Allen is passionate about computer languages, and he maintains 100% of the material available on this website. He hopes it makes the world a nicer place.
This page was last updated on Aug 20, 2024 (rewrite).