#ios #swift
#iOS #swift
Вопрос:
Как мне удалить, а не декодировать символы, экранированные в процентах, из строки с помощью Swift. Например:
"hello there"
должен стать "hellothere"
Редактировать:
Я хотел бы заменить несколько символов, экранированных процентами, в строке. Итак: "hello there
следует стать
person" "hellothereperson"
Ответ №1:
let string = originalString.replacingOccurrences(of: "%[0-9a-fA-F]{2}",
with: "",
options: .regularExpression,
range: nil)
Ответ №2:
Вы можете использовать метод «removingPercentEncoding»
let precentEncodedString = "hello there
person"
let decodedString = precentEncodedString.removingPercentEncoding ?? ""
Ответ №3:
Вы можете использовать регулярное выражение для этого сопоставления %
, за которым следуют два числа: %[0-9a-fA-F]{2}
let myString = "hello there
$person"
let regex = try! NSRegularExpression(pattern: "%[0-9a-fA-F]{2}", options: [])
let range = NSMakeRange(0, myString.characters.count)
let modString = regex.stringByReplacingMatchesInString(myString,
options: [],
range: range,
withTemplate: "")
print(modString)
Комментарии:
1. хороший вызов с использованием регулярного выражения — к сожалению, это не совсем покрывает его, потому что иногда за шестнадцатеричными символами следуют
%
, а не только 0-9.2. @Gazzini Понял! Кажется, что путь к регулярному выражению был исправлен другими ответами, но все в порядке, я все равно обновил свое регулярное выражение до правильного значения 🙂 Спасибо, что указали на это.
Ответ №4:
let input:String = "hello there
person"
guard let output = input.stringByRemovingPercentEncoding else{
NSLog("failed to remove percent encoding")
return
}
NSLog(output)
и результат
hello there
person
затем вы можете просто удалить пробелы
или вы можете удалить его с помощью регулярного выражения
"%([0-9a-fA-F]{2})"
Комментарии:
1. Спасибо, но я пытаюсь удалить , а не декодировать специальные символы.
2. Извините, я не заметил в первый раз, когда обновил свой ответ