Удаление символов, экранированных процентами, из строки

#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. Извините, я не заметил в первый раз, когда обновил свой ответ