任何人都知道如何修剪或消除字符串中的字符?我有一個來自UIlabel的數據,如「ABCDE1000001」,我只需要獲取數字。任何想法?修剪? Concat的?其他解決方案?Swift 3修剪字符
我也嘗試這一點,但在尋找其他的解決方案
let cardtrim = String.trimmingCharacters(in: CharacterSet(charactersIn: "ABCDEF"))
任何人都知道如何修剪或消除字符串中的字符?我有一個來自UIlabel的數據,如「ABCDE1000001」,我只需要獲取數字。任何想法?修剪? Concat的?其他解決方案?Swift 3修剪字符
我也嘗試這一點,但在尋找其他的解決方案
let cardtrim = String.trimmingCharacters(in: CharacterSet(charactersIn: "ABCDEF"))
你的代碼工作完美,但你需要調用它在其中存儲要修剪值的字符串變量。
let stringToTrim = "ABCDE1000001"
let cardtrim = stringToTrim.trimmingCharacters(in: CharacterSet(charactersIn: "ABCDEF")) //value: 1000001
一個更通用的解決方案是使用CharacterSet.decimalDigits.inverted
只保留數字從字符串。
let cardtrim = stringToTrim.trimmingCharacters(in: CharacterSet.decimalDigits.inverted)
注意trimmingCharacters
只刪除從字符串的開頭和結尾的字符集字符,所以如果你有一個像ABC101A101
一個字符串,並希望刪除它所有的字母,你將不得不使用一種不同的方法(例如正則表達式)。
男人。讓我抱你。謝謝! –
這***並不是最好的解決方案***。在不同的語言環境中,您不知道「十進制數字」可能是什麼。例如 - 它是否包含「。」 ? – Fattie
@Fattie'CharacterSet'使用Unicode規範,所以它的所有子集都是獨立於區域的AFAIK。 –
這個擴展將返回數字字符串中的這正是你所需要的
extension String {
var digits: String {
return components(separatedBy: CharacterSet.decimalDigits.inverted)
.joined()
}
}
考慮到trimmingCharacters
只刪除(連續)開頭或結尾匹配的字符集的字符。
要刪除一個字符串所有非數字字符我建議正則表達式
let string = "ABC12DE100YU0001"
let trimmedString = string.replacingOccurrences(of: "\\D", with: "", options: .regularExpression)
// -> "121000001"
嘗試,而不是硬編碼charactersIn
這個,這是一個動態的解決方案,將在絕不僅僅是strings
其他變化工作ABCDEF
。
extension String {
var numbersOnly: String {
let numbers = self.replacingOccurrences(
of: "[^0-9]",
with: "",
options: .regularExpression,
range:nil)
return numbers
}
}
let string = "A77BC66DE1001".numbersOnly // 77661001
這很酷!設置擴展字符串。謝啦! –
你應該考慮使用類似這樣的東西,而不是硬編碼值。如果你的字符串看起來不同,那麼你的代碼將不起作用 –
好點。爲通用目的。謝啦! –
你得SWIFTY:
let string = "ABC12DE100YU0001".filter { ("0"..."9").contains($0) }
在擴展:
extension String {
func filterLetters() -> String {
return filter { ("0"..."9").contains($0) }
}
}
如果輸入的是'A1B2C3'?如果根本沒有數字會怎麼樣? –
檢查我的解決方案,它會過濾除數字之外的所有內容。 –