Swift 3修剪角色

时间:2017-09-10 10:51:43

标签: swift swift3 trim

任何人都知道如何修剪或消除字符串中的字符?我有来自UIlabel的数据,如" ABCDE1000001"我只需要获取数字。任何的想法?修剪? Concat的?任何其他解决方案?

我也尝试这个但是寻找其他解决方案

 let cardtrim = String.trimmingCharacters(in: CharacterSet(charactersIn: "ABCDEF"))

5 个答案:

答案 0 :(得分:2)

尝试此操作而不是对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

答案 1 :(得分:1)

您的代码运行正常,但您需要在String变量上调用它,在该变量中存储要修剪的值。

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的字符串并想要删除其中的所有字母,那么您和# 39; ll必须使用不同的方法(例如正则表达式)。

答案 2 :(得分:1)

考虑trimmingCharacters仅删除与字符集匹配的(连续的)前导或尾随字符。

要删除字符串中的所有非数字字符,我建议使用正则表达式

let string = "ABC12DE100YU0001"
let trimmedString = string.replacingOccurrences(of: "\\D", with: "", options: .regularExpression)
// -> "121000001"

答案 3 :(得分:1)

你必须得到Swifty:

let string = "ABC12DE100YU0001".filter { ("0"..."9").contains($0) }

在扩展中:

extension String {

    func filterLetters() -> String {
        return filter { ("0"..."9").contains($0) }
    }
}

答案 4 :(得分:-1)

此扩展名将返回字符串中的数字,这正是您所需要的

extension String {

    var digits: String {
        return components(separatedBy: CharacterSet.decimalDigits.inverted)
            .joined()
    }
}

Source