let myStr = "I have 4.34 apples."
我需要位置范围和长度,因为我正在使用NSRange(location :, length :)将数字4.34加粗
extension String{
func findNumbersAndBoldThem()->NSAttributedString{
//the code
}
}
答案 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