在Swift中从字符串中删除某个字符后的所有字符

17

我有一个textField,我想删除某个字符后面的所有字符。

例如,如果我的textField中有单词Orange,我想要删除字母n后面的所有字符,我希望在删除后得到Ora

如何在Swift中删除某个字符后面的所有字符?

谢谢!

2个回答

41
你可以使用 StringProtocol 的方法range(of string:),获取结果的范围下界(lowerBound),然后用它创建一个 PartialRangeUpTo ,并对原始字符串进行子脚本(subscript):

Swift 4或更高版本

let word = "orange"
if let index = word.range(of: "n")?.lowerBound {
    let substring = word[..<index]                 // "ora"
    // or  let substring = word.prefix(upTo: index) // "ora"
    // (see picture below) Using the prefix(upTo:) method is equivalent to using a partial half-open range as the collection’s subscript. 
    // The subscript notation is preferred over prefix(upTo:).

    let string = String(substring)
    print(string)  // "ora"
}

enter image description here


4
在 Swift 4 中,我喜欢使用 prefix(upTo:)suffix(from:) 方法。如果可以找到 "n" 的位置,我会这样写:if let index = word.range(of: "n")?.lowerBound { let StringAfter = String(word.prefix(upTo: index)) } - fs_tigre
非常感谢!@fs_tigre你的解决方案对我有用!!=D - Maryoomi1

1
你可以像这样做:

guard let range = text.rangeOfString("Your String or Character here") else {
    return the text 
}

return text.substringToIndex(range.endIndex)
// depending on if you want to delete before a certain string, you would use range.startIndex

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接