swift: 如何删除特定符号?

线类型
! !! yuahl! !

, 我想删除
!



, 当我编码时


for index in InputName.characters.indices {
if String/InputName[index]/ == "" || InputName.substringToIndex/index/ == "!" {
InputName.removeAtIndex/index/
}
}


有这样的错误 " fatal error: subscript: subRange extends past String end ", 我该怎么做? THX :D
已邀请:

喜特乐

赞同来自:

Swift 3+


let myString = "aaaaaaaabbbb"
let replaced = myString.replacingOccurrences/of: "bbbb", with: ""/ // "aaaaaaaa"

詹大官人

赞同来自:

我发现那种方法
filter

- 这是去这样的好方法:


let unfiltered = "! !! yuahl! !"

// Array of Characters to remove
let removal: [Character] = ["!"," "]

// turn the string into an Array
let unfilteredCharacters = unfiltered.characters

// return an Array without the removal Characters
let filteredCharacters = unfilteredCharacters.filter { !removal.contains/$0/ }

// build a String with the filtered Array
let filtered = String/filteredCharacters/

print/filtered/ // => "yeah"

// combined to a single line
print/String/unfiltered.characters.filter { !removal.contains/$0/ }// // => "yuahl"

快网

赞同来自:

如果您需要仅从两端删除字符,则可以使用
stringByTrimmingCharactersInSet/_:/



let delCharSet = NSCharacterSet/charactersInString: "! "/

let s1 = "! aString! !"
let s1Del = s1.stringByTrimmingCharactersInSet/delCharSet/
print/s1Del/ //->aString

let s2 = "! anotherString !! aString! !"
let s2Del = s2.stringByTrimmingCharactersInSet/delCharSet/
print/s2Del/ //->anotherString !! aString


如果您需要删除中间的字符, "reconstruct from the filtered output" 它比重新删除一个角色更有效。


var tempUSView = String.UnicodeScalarView//
tempUSView.appendContentsOf/s2.unicodeScalars.lazy.filter{!delCharSet.longCharacterIsMember/$0.value/}/
let s2DelAll = String/tempUSView/
print/s2DelAll/ //->anotherStringaString


如果您不对象生成大量的中间行和数组,则此单个绑定可以生成预期结果:


let s2DelAll2 = s2.componentsSeparatedByCharactersInSet/delCharSet/.joinWithSeparator/""/
print/s2DelAll2/ //->anotherStringaString

詹大官人

赞同来自:

Swift 3

在 Swift 3 语法有点好。 由于旧的巨大加速 APIs 现在称出厂方法
trimmingCharacters/in:/

. 另外,你可以构建
CharacterSet

作为
Set

从一个素食
String

s:


let string = "! !! yuahl! !"
string.trimmingCharacters/in: [" ", "!"]/ // "yuahl"


如果您在线中间有字符,您还想要删除,则可以使用
components/separatedBy:/.joined//

:


let string = "! !! yu !ahl! !"
string.components/separatedBy: ["!", " "]/.joined// // "yuahl"


H / T @OOPer 版本 Swift 2

冰洋

赞同来自:

func trimLast/character chars: Set<character>/ -&gt; String {

let str: String = String/self.reversed///

guard let index = str.index/where: {!chars.contains/$0/}/ else {
return self
}
return String//str[index..<str.endindex] ,="" .reversed="" <="" [code]string[="" code]="" div="" }[="" 将此功能添加到扩展="" 您最终可以删除特定的字符串符号。="" 笔记:="">
<div class="answer_text">
您还可以添加如此非常有用的扩展。 :


[code]import Foundation


extension String{
func exclude/find:String/ -&gt; String {
return stringByReplacingOccurrencesOfString/find, withString: "", options: .CaseInsensitiveSearch, range: nil/
}
func replaceAll/find:String, with:String/ -&gt; String {
return stringByReplacingOccurrencesOfString/find, withString: with, options: .CaseInsensitiveSearch, range: nil/
}
}


</div>
<div class="answer_text">

for index in InputName.characters.indices.reversed// {
if String/InputName[index]/ == "" || InputName.substringToIndex/index/ == "!" {
InputName.removeAtIndex/index/
}
}


</div>
<div class="answer_text">
您可以使用它:

例如,如果要删除 " % " 百分比 10%


if let i = text.firstIndex/of: "%"/ {
text.remove/at: i/ //10
}


</div>
</str.endindex]></character>

喜特乐

赞同来自:

您还可以添加如此非常有用的扩展。 :


import Foundation


extension String{
func exclude/find:String/ -> String {
return stringByReplacingOccurrencesOfString/find, withString: "", options: .CaseInsensitiveSearch, range: nil/
}
func replaceAll/find:String, with:String/ -> String {
return stringByReplacingOccurrencesOfString/find, withString: with, options: .CaseInsensitiveSearch, range: nil/
}
}

三叔

赞同来自:

for index in InputName.characters.indices.reversed// {
if String/InputName[index]/ == "" || InputName.substringToIndex/index/ == "!" {
InputName.removeAtIndex/index/
}
}

郭文康

赞同来自:

您可以使用它:

例如,如果要删除 " % " 百分比 10%


if let i = text.firstIndex/of: "%"/ {
text.remove/at: i/ //10
}

要回复问题请先登录注册