Търся начин да заменям символи в Swift String
.
Пример: "Това е моят низ"
Бих искал да заменя `с
+, за да получа:
"This+is+my+string"`.
Как мога да постигна това?
Този отговор е актуализиран за Swift 4. Ако все още използвате Swift 1, 2 или 3, вижте историята на ревизиите.
Имате няколко възможности. Можете да постъпите, както предложи @jaumard, и да използвате replacingOccurrences()
let aString = "This is my string"
let newString = aString.replacingOccurrences(of: " ", with: "+", options: .literal, range: nil)
И както @cprcrack отбеляза по-долу, параметрите options
и range
не са задължителни, така че ако не искате да посочвате опции за сравняване на низове или диапазон, в който да се извърши замяната, ви е необходимо само следното.
let aString = "This is my string"
let newString = aString.replacingOccurrences(of: " ", with: "+")
Или, ако данните са в специфичен формат като този, в който просто замествате разделителни знаци, можете да използвате функцията components()
, за да разделите низа на масив, а след това можете да използвате функцията join()
, за да ги съберете отново заедно с определен разделител.
let toArray = aString.components(separatedBy: " ")
let backToString = toArray.joined(separator: "+")
Ако пък търсите по-свито решение, което не използва API от NSString, можете да използвате това.
let aString = "Some search text"
let replaced = String(aString.map {
$0 == " " ? "+" : $0
})
Можете да използвате това:
let s = "This is my string"
let modified = s.replace(" ", withString:"+")
Ако добавите този метод за разширение където и да е в кода си:
extension String
{
func replace(target: String, withString: String) -> String
{
return self.stringByReplacingOccurrencesOfString(target, withString: withString, options: NSStringCompareOptions.LiteralSearch, range: nil)
}
}
Swift 3:
extension String
{
func replace(target: String, withString: String) -> String
{
return self.replacingOccurrences(of: target, with: withString, options: NSString.CompareOptions.literal, range: nil)
}
}
Тествахте ли това:
var test = "This is my string"
let replaced = test.stringByReplacingOccurrencesOfString(" ", withString: "+", options: nil, range: nil)