我正在尝试修剪电话号码并使用以下代码,但它不会修剪空格或" - ".我需要擦除除了给出的字符集中的所有字符
func trimmedNumber(s : String)->String
{
let characterSet = NSCharacterSet(charactersInString: "+*#0123456789")
let trimmedString = s.stringByTrimmingCharactersInSet(characterSet.invertedSet)
return trimmedString
}
Run Code Online (Sandbox Code Playgroud)
dal*_*ook 23
迅捷3/4:
let set = CharacterSet(charactersIn: "+*#0123456789")
let stripped = s.components(separatedBy: set.inverted).joined()
Run Code Online (Sandbox Code Playgroud)
func trimmedNumber(s : String) -> String {
let characterSet = Set("+*#0123456789".characters)
return String(s.characters.lazy.filter(characterSet.contains))
}
Run Code Online (Sandbox Code Playgroud)
或者在Swift 1中:
func trimmedNumber(s : String) -> String {
let characterSet = Set("+*#0123456789")
return String(lazy(s).filter { characterSet.contains($0) })
}
Run Code Online (Sandbox Code Playgroud)
将方法添加removingCharacters(in:)到 Swift 的String类型中。它返回一个新字符串,该字符串是通过从String.
例如:
let string = "+1-202-555-0141"
let set = CharacterSet(charactersIn: "+*#0123456789")
let sanitized = string.removingCharacters(in: set.inverted)
// sanitized is equal to "+12025550141"
Run Code Online (Sandbox Code Playgroud)
助手.swift
extension String {
public func removingCharacters(in set: CharacterSet) -> String {
let filtered = unicodeScalars.filter { !set.contains($0) }
return String(String.UnicodeScalarView(filtered))
}
}
Run Code Online (Sandbox Code Playgroud)
HelpersTests.swift
import XCTest
class HelpersTests: XCTestCase {
func testRemovingCharacters() {
let inputText1 = ""
let set1 = CharacterSet.decimalDigits.inverted
let sanitized1 = inputText1.removingCharacters(in: set1)
XCTAssertEqual("", sanitized1)
let inputText2 = " tab:\tspace: no-break_space: "
let set2 = CharacterSet.whitespaces
let sanitized2 = inputText2.removingCharacters(in: set2)
XCTAssertEqual("tab:space:no-break_space:", sanitized2)
let inputText3 = " aBc!@#12 $%^&*()-_=+[{]}\\|;:'\"3,<.>/?`~ "
let set3 = CharacterSet.alphanumerics.inverted
let sanitized3 = inputText3.removingCharacters(in: set3)
XCTAssertEqual("aBc123", sanitized3)
}
}
Run Code Online (Sandbox Code Playgroud)
另请参阅:在 Swift 中将 UnicodeScalar 数组转换为字符串
| 归档时间: |
|
| 查看次数: |
6145 次 |
| 最近记录: |