查找字符串中的数字并返回位置和长度

时间:2019-01-05 17:58:34

标签: swift numbers find return location

let myStr = "I have 4.34 apples."

我需要位置范围和长度,因为我正在使用NSRange(location :, length :)将数字4.34加粗

extension String{
    func findNumbersAndBoldThem()->NSAttributedString{
         //the code
    }
}

2 个答案:

答案 0 :(得分:1)

我的建议也基于正则表达式,但是有一种更方便的方法从NSRange中获取Range<String.Index>

let myStr = "I have 4.34 apples."
if let range = myStr.range(of: "\\d+\\.\\d+", options: .regularExpression) {
    let nsRange = NSRange(range, in: myStr)
    print(nsRange)
}

如果要检测整数和浮点值,请使用模式

"\\d+(\\.\\d+)?"

括号和结尾的问号表示小数点和小数位是可选的。

答案 1 :(得分:0)

以下是位置和长度(使用this答案):

let sentence: String = "I have 4.34 apples."
let range = sentence.range(of: "\\d+[.]\\d+", options: .regularExpression, range: nil, locale: nil)

let length = range!.upperBound.encodedOffset - range!.lowerBound.encodedOffset // 4
let location = range!.lowerBound.encodedOffset // 7