При форматировании одной строки (s1
) из другой строки (s0
) я получаю посторонние символы ...
s0
не является строкой.Это массив строк (т. Е. Квадратные скобки [String]
обозначают массив и совпадают с высказыванием Array<String>
).И ваш s1
также является массивом, но тот, который имеет один элемент, значение которого является строковым представлением всего массива s0
строк.Это явно не то, что вы хотели.
Как мне отформатировать s1, чтобы он не включал скобки, экранирующие символы \n
и начальные пробелы?
Вы получаете эти скобки, потому что s1
это массив.Вы получаете строку с \n
и пробелами, потому что ее первое значение является строковым представлением еще одного массива, s0
.
Итак, если вы просто пытаетесь отформатировать строку, s0
, вы можете сделать:
let s0: String = "abcdef"
let s1: String = String(format: "It is ‘%@’", s0)
Или, если вы действительно хотите массив строк, вы можете вызвать String(format:)
для каждого, используя функцию map
:
let s0: [String] = ["abcdef", "ghijkl"]
let s1: [String] = s0.map { String(format: "It is ‘%@’", $0) }
Кстати, в приведенных выше примерах я не использовал строковый формат просто %@
, потому что это вообще ничего не дает, поэтому я предположил, что вы форматировали строку по причине.
FWIW, мы обычно не используем String(format:)
очень часто.Обычно мы выполняем «интерполяцию строк» с \(
и )
:
let s0: String = "abcdef"
let s1: String = "It is ‘\(s0)’"