Как применить пробелы в строке со знаком фунта в Swift? - PullRequest
1 голос
/ 27 марта 2019

Swift 5 разработал дополнительный новый подход для объявления строковых литералов, который использует знак # (перед открытием и закрытием кавычек), чтобы объявить строку, не беспокоясь о обратных косых чертах и кавычках знаки .

(Ссылка: https://github.com/apple/swift-evolution/blob/master/proposals/0200-raw-string-escaping.md)

Например:

let string1 = #"\ Hello World"#
print(string1) // => \ Hello World

let string2 = "Hello World #"
print(string2) // => Hello World #

let string3 = ##"#\#\ Hello World #\#\"##
print(string3) // => #\#\ Hello World #\#\

Однако при попытке использовать знаки фунта для объявления строки, содержащей пробел, это не сработает. Давайте рассмотрим вкладку:

let tabString = #"Hello World\t#"#
print(tabString) // => Hello World\t#

Мой ожидаемый результат - Hello World #, но не Hello World\t#.

Как решить такую ​​проблему при использовании # декларации?

1 Ответ

2 голосов
/ 27 марта 2019

Обновленный ответ:

На данный момент вы можете ввести его как \#t.

Спасибо за @dan за комментарий.


Старый ответ:

Логически, результат Hello World\t\ представляется логичным, потому что цель использования # для объявления строки состоит в том, чтобы «буквально» иметь дело с обратными слешами как обратными слешами, означает, что «\ t» будет отображаться как "\t", но не " ".

В качестве обходного пути, что вы могли бы сделать здесь, это интерполировать пробел в вашей строке какстрока, объявленная без использования знака фунта:

let tabString = #"Hello World \#("\t")#"#
print(tabString) // => Hello World     #

Имейте в виду, что при интерполяции внутри объявленной строки #""# необходимо добавить # после обратной косой черты (\#("\t") NOT \("\t")).

...