我想从一个字符串中剪切几个子字符串,它们总是在两个空格之间,以便进一步使用它们。但最后我得到一个额外的标志("")...... 我究竟做错了什么?谁可以帮忙?
let text = "123045 7890 842 abcde fghij"
var index4Blank = text.index(of: " ") // first 'blank'
index4Blank?.encodedOffset
// Find NEXT/last occurance of " "
if let rangeOfBlank = text.range(of: " ", options: .backwards) {
// Get the characters between first 'blank' and next 'blank'
let suffix = text[index4Blank!..<rangeOfBlank.upperBound] // "7890 "
print(suffix)
}
我想要的:&#34; 123045&#34;和&#34; 7890&#34;和&#34; 842&#34;和&#34; abcde&#34;和&#34; fghij&#34; ((对不起,这个问题,但我真的是Swift的初学者))
答案 0 :(得分:2)
let text = "123045 7890 842 abcde fghij"
var textArr = text.components(separatedBy: " ") // For swift 3+
var textArr = text.split(separator: " ") // For swift 4
print(textArr)
您可以在名为&#34; textArr&#34;的数组中使用此代码获取子字符串。
答案 1 :(得分:0)
按字面意思回答你的问题:
index(of:
- 顾名思义 - 返回找到的字符串的第一个字符的索引,在您的情况下返回123045
range(of: ... ).upperBound
返回后字符的索引,以便包含最后一个空格字符。要使用您的代码删除前导和尾随空格,您必须使用lowerBound
作为上限,range(of:
调用upperBound
作为下限。
let text = "123045 7890 842 abcde fghij"
if let index4Blank = text.range(of: " "),
// Find NEXT/last occurance of " "
let rangeOfBlank = text.range(of: " ", options: .backwards) {
// Get the characters between first 'blank' and next 'blank'
let suffix = text[index4Blank.upperBound..<rangeOfBlank.lowerBound] // "7890 "
print(suffix)
}
然而,要通过给定的分隔符将字符串拆分为多个部分,可以采用其他答案或here
更好的方式