首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在swift中删除字符串中的所有非数字字符

在swift中删除字符串中的所有非数字字符
EN

Stack Overflow用户
提问于 2016-04-13 17:28:27
回答 8查看 58.6K关注 0票数 98

我需要解析一些未知的数据,这些数据应该只是一个数字值,但可能包含空格或其他非字母数字字符。

在Swift中有没有一种新的方式来做这件事?我在网上所能找到的似乎都是老的C语言做事的方式。

我正在查看stringByTrimmingCharactersInSet -因为我确信我的输入在字符串的开头或结尾只有空格/特殊字符。有没有内置的字符集可以用来做这件事?或者我需要创建我自己的?

我希望有像stringFromCharactersInSet()这样的东西,它允许我只指定要保留的有效字符

EN

回答 8

Stack Overflow用户

发布于 2017-05-24 14:41:16

我更喜欢this solution,因为我喜欢扩展,而且它对我来说似乎更干净一些。此处转载的解决方案:

代码语言:javascript
复制
extension String {
    var digits: String {
        return components(separatedBy: CharacterSet.decimalDigits.inverted)
            .joined()
    }
}
票数 30
EN

Stack Overflow用户

发布于 2016-04-13 18:26:46

一种使用filter函数和rangeOfCharacterFromSet的解决方案

代码语言:javascript
复制
let string = "sld [f]34é7*˜µ"

let alphaNumericCharacterSet = NSCharacterSet.alphanumericCharacterSet()
let filteredCharacters = string.characters.filter {
  return  String($0).rangeOfCharacterFromSet(alphaNumericCharacterSet) != nil
}
let filteredString = String(filteredCharacters) // -> sldf34é7µ

要仅筛选数字字符,请使用

代码语言:javascript
复制
let string = "sld [f]34é7*˜µ"

let numericSet = "0123456789"
let filteredCharacters = string.characters.filter {
  return numericSet.containsString(String($0))
}
let filteredString = String(filteredCharacters) // -> 347

代码语言:javascript
复制
let numericSet : [Character] = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"]
let filteredCharacters = string.characters.filter {
  return numericSet.contains($0)
}
let filteredString = String(filteredCharacters) // -> 347
票数 11
EN

Stack Overflow用户

发布于 2016-12-08 07:37:14

Swift 3,过滤除数字以外的所有内容

代码语言:javascript
复制
let myString = "dasdf3453453fsdf23455sf.2234"
let result = String(myString.characters.filter { String($0).rangeOfCharacter(from: CharacterSet(charactersIn: "0123456789")) != nil })
print(result)
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36594179

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档