Найти число в строке и вернуть местоположение и длину - PullRequest
0 голосов
/ 05 января 2019
let myStr = "I have 4.34 apples."

Мне нужен диапазон местоположения и длина, потому что я использую NSRange (location :, length :), чтобы выделить число 4,34

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

Ответы [ 2 ]

0 голосов
/ 05 января 2019

Мое предложение также основано на регулярном выражении, но есть более удобный способ получить 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+)?"

Скобки и завершающий вопросительный знак указывают на то, что десятичная точка и дробные цифры являются необязательными.

0 голосов
/ 05 января 2019

Вот местоположение и длина (используя этот ответ):

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...