答案 How to strip special characters out of string? 没有用。
这是我得到的,它给了我一个错误
func removeSpecialCharsFromString(str: String) -> String {
let chars: Set<String> = Set(arrayLiteral: "abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLKMNOPQRSTUVWXYZ1234567890+-*=(),.:!_")
return String(str.characters.filter { chars.contains($0) }) //error here at $0
}
$ 0处的错误表示_Element(aka Character)无法转换为预期的参数类型'String'。
答案 0 :(得分:51)
像这样:
func removeSpecialCharsFromString(text: String) -> String {
let okayChars : Set<Character> =
Set("abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLKMNOPQRSTUVWXYZ1234567890+-*=(),.:!_".characters)
return String(text.characters.filter {okayChars.contains($0) })
}
以下是测试方法:
let s = removeSpecialCharsFromString("père") // "pre"
答案 1 :(得分:18)
SWIFT 4:
func removeSpecialCharsFromString(text: String) -> String {
let okayChars = Set("abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLKMNOPQRSTUVWXYZ1234567890+-=().!_")
return text.filter {okayChars.contains($0) }
}
更清洁的方式:
extension String {
var stripped: String {
let okayChars = Set("abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLKMNOPQRSTUVWXYZ1234567890+-=().!_")
return self.filter {okayChars.contains($0) }
}
}
使用此扩展程序,如:
let myCleanString = "some.Text@#$".stripped
输出:“some.Text”
答案 2 :(得分:9)
我认为更清洁的解决方案可能是这种方法:
extension String {
var alphanumeric: String {
return self.components(separatedBy: CharacterSet.alphanumerics.inverted).joined().lowercased()
}
}
答案 3 :(得分:6)
在 Swift 1.2中,
let chars = Set("abcde...")
创建了一个包含给定字符串中所有字符的集合。 在 Swift 2.0 中,这必须以
完成let chars = Set("abcde...".characters)
原因是字符串本身不再符合
SequenceType
,您必须明确使用characters
视图。
通过此更改,您的方法将按预期编译并运行:
func removeSpecialCharsFromString(str: String) -> String {
let chars = Set("abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLKMNOPQRSTUVWXYZ1234567890+-*=(),.:!_".characters)
return String(str.characters.filter { chars.contains($0) })
}
let cleaned = removeSpecialCharsFromString("ab€xy")
print(cleaned) // abxy
备注: @Kametrixom建议只创建一次。所以 if 有
使用上述方法的性能问题你可以移动
在函数外部声明集合,或者使它成为一个
本地static
:
func removeSpecialCharsFromString(str: String) -> String {
struct Constants {
static let validChars = Set("abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLKMNOPQRSTUVWXYZ1234567890+-*=(),.:!_".characters)
}
return String(str.characters.filter { Constants.validChars.contains($0) })
}
答案 4 :(得分:1)
如果您只需要在字符串中保留ascii可打印字符,则可以过滤它们以检查其unicodeScalar值是否为ascii:
extension Character {
var isAscii: Bool {
return unicodeScalars.allSatisfy { $0.isASCII }
}
}
extension RangeReplaceableCollection where Self: StringProtocol {
var asciiPrintable: Self {
return filter { $0.isAscii }
}
}
let string = "cafe\u{301}"
let asciiPrintable = string.asciiPrintable
print(asciiPrintable) // "caf"
答案 5 :(得分:1)
尝试一下:
df = pd.DataFrame(data1, columns= ['Price', 'Location', 'Area size'])
for x in range (len(price)):
data1 = {'Price': [price[x].text],
'Location': [location[x].text],
'Size': [area_size[x].text]}
df.to_csv('static/home.csv', header="False", mode="a")
driver.quit()