Swift 5 заменяет несколько элементов - PullRequest
0 голосов
/ 02 августа 2020
let osetx = "01et"

Я хочу заменить «e» на «11» и «t» на «10». Каков синтаксис для этого, вызывая функцию только один раз?

let newOsetx = osetx.replacingOccurrences(of: "e", with: "11")

Очевидно, что приведенное выше заменяет только один из двух элементов.

СПАСИБО pawello2222 за синтаксис в комментариях .

osetx.replacingOccurrences (of: "e", with: "11"). ReplaceOccurrences (of: "t", with: "10")

Ответы [ 3 ]

1 голос
/ 03 августа 2020

Вы можете связать вызовы методов. replacingOccurrences - строковый метод, который что-то делает со строкой, но возвращает строку. В результате вы можете связать результат первого, а затем сделать то же самое снова. Фактически, вы можете делать это неопределенное количество раз, однако есть способы сделать это лучше.

newOsetx = osetx.replacingOccurrences(of: "e", with: "ll").replacingOccurrences(of: "t", with: "10")

Другой вариант - сделать это так.

newOsetx = osetx.replacingOccurrences(of: "e", with: "ll")
let finalOsetX = newOsetx.replacingOccurrences(of: "t", with: "10")

В общем, посмотрите на возвращаемый тип метода, он отображается в раскрывающемся окне. Этот возвращаемый тип также будет иметь методы, с которыми его можно будет использовать.

0 голосов
/ 03 августа 2020

Ответ xTwisteDx правильный. Просто объедините свои replacingOccurrences вызовы.

Но просто стилистическое наблюдение c: часто при объединении нескольких таких вызовов мы можем разбить их на отдельные строки, например

let newOsetx = osetx
    .replacingOccurrences(of: "e", with: "11")
    .replacingOccurrences(of: "t", with: "10")

Когда вы делаете кучу замен, это может облегчить чтение кода с первого взгляда.

Если вы выполняете более двух или трех замен, вы можете подумать об использовании некоторого шаблона цикла. Например, вы можете использовать массив кортежей, представляющих строки поиска и замены:

let replacements = [
    ("e", "11"),
    ("t", "10")
]

Затем вы можете l oop через них, выполняя замены:

var newOsetx = osetx

for (searchString, replacement) in replacements {
    newOsetx = newOsetx.replacingOccurrences(of: searchString, with: replacement)
}

Или вы можете использовать reduce:

let newOsetx = replacements.reduce(osetx) { string, replacement in
    string.replacingOccurrences(of: replacement.0, with: replacement.1)
}
0 голосов
/ 03 августа 2020

osetx.replacingOccurrences (of: "e", with: "11"). ReplaceOccurrences (of: "t", with: "10")

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...