任何人都知道如何修剪或消除字符串中的字符?我有一个来自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'?如果根本没有数字会怎么样? –
检查我的解决方案,它会过滤除数字之外的所有内容。 –