Заменить определенные символы в строке - PullRequest
0 голосов
/ 14 января 2019

В настоящее время я пытаюсь заменить определенные символы в строке с помощью Swift 3.

var str = "Hello"    
var replace = str.replacingOccurrences(of: "Hello", with: "_____")    
print(replace)

Это напечатает: _____, но моя проблема возникает, когда str изменяется и состоит из другого числа символов или нескольких слов, таких как:

var str = "Hello World"

Теперь я хочу, чтобы переменная замены автоматически обновлялась при изменении str. Все символы, кроме «Пробел», должны быть заменены на _ и более позднюю печать _____ _____, которая должна представлять Hello World.

Есть мысли о том, как это можно реализовать?

Ответы [ 2 ]

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

Если вы хотите заменить все символы слова, вы можете использовать ввод regularExpressions для параметра options той же функции, которую вы использовали ранее, просто измените конкретный ввод String на \\w, который будет соответствовать любому символы слова.

let str = "Hello World"
let replace = str.replacingOccurrences(of: "\\w", with: "_", options: .regularExpression) // "_____ _____"

Имейте в виду, что \\w также не заменит другие специальные символы, поэтому для ввода "Hello World!" он выдаст "_____ _____!". Если вы хотите заменить каждый символ, кроме пробелов, используйте \\S.

let replace = str.replacingOccurrences(of: "\\S", with: "_", options: .regularExpression)
0 голосов
/ 14 января 2019

Все символы, кроме «Пробел», должны быть заменены на _

Есть несколько вариантов. Вы можете map() каждый символ заменить его и объединить результат в строку:

let s = "Swift is great"
let t = String(s.map { $0 == " " ? $0 : "_" })
print(t) // _____ __ _____

Или используйте регулярные выражения, \S - это шаблон для «не пробельных символов»:

let t = s.replacingOccurrences(of: "\\S", with: "_", options: .regularExpression)
print(t) // _____ __ _____
...