Как я могу добавить символв конец строки в С#

Вопрос:Пожалуйста, простите меня вопрос начинающего:) string S="abc"; S+=""; не будет выполняться. string S="abc"; S+=""; сделает S = "abc " Как я могу сделать S = "abc "? Ответ №1Ваша вторая часть кода - это то, что вы хотите (или дословный строковый литерал @"", как предлагали другие), и добавляет только один обратный слэш - распечатайте его

Вопрос:

Пожалуйста, простите меня вопрос начинающего:)

string S=»abc»; S+=»»;

не будет выполняться.

string S=»abc»; S+=»\»;

сделает S = “abc \”

Как я могу сделать S = “abc ”?

Ответ №1

Ваша вторая часть кода – это то, что вы хотите (или дословный строковый литерал @»», как предлагали другие), и добавляет только один обратный слэш – распечатайте его на консоли, и вы это увидите.

Эти два фрагмента кода:

S += «\»;

и

S += @»»;

в точности эквивалентны. В обоих случаях одна обратная косая черта добавляется 1.

Я подозреваю, что вас смущает представление отладчика, которое ускользает от обратных косых черт (и некоторых других символов). Вы можете проверить, что даже с отладчиком, посмотрев на S.Length, который вы увидите, это 4, а не 5.

1 Обратите внимание, что он не изменяет данные в существующей строке, но устанавливает значение S для ссылки на новую строку, состоящую из оригинала с обратной косой чертой на конец. Строковые объекты в .NET неизменяемы – но это целая другая тема…

Ответ №2

Попробуйте следующее:

String S = «abc»; S += @»»;

@= verbatim string literal

http://msdn.microsoft.com/en-us/library/aa691090%28v=vs.71%29.aspx

http://msdn.microsoft.com/en-us/library/vstudio/362314fe.aspx

Ответ №3string S = «abs» + «\»;

Должен и результат abc.

То, что вы, вероятно, видите, это то, как отладчик /intellisense визуализирует эту строку для вас.
Попробуйте распечатать строку на консоли или отобразить ее в текстовом поле.

Ответ №4

У вас уже есть решение. Причина, по которой он выглядит как abc\, в то время как отладка связана с тем, что VS будет избегать обратных косых черт, напечатайте значение S в окне консоли, и вы увидите abc.
Вы можете добавить @ в начало строкового литерала, например.

string S=»abc»; S+= @»»;

Которое достигнет того же.

Ответ №5

Вы можете избежать обратной косой черты с помощью символа @:

string S=»abc»; S += @»»;

Но это точно соответствует тому, что вы написали во втором примере. Путаница в этом связана с тем, что отладчик Visual Studio продолжает избегать этих символов, хотя ваша исходная строка будет содержать только одну обратную косую черту.

Ответ №6

Ваш второй пример отлично выглядит

string S=»abc»; S+=»\»;

Visual studio отображает строку, экранированную, поэтому вы видите две строки в строке результата. Если вы не хотите использовать escaping, объявляете строку вроде этого

@»»

Это не компиляция, потому что компилятор ожидает символа после escape-символа

string S=»abc»; S+=»»; Ответ №7string S=»abc»; S+=»\»; Console.WriteLine(S); // This is what you’re missing 😉

Вы увидите, что ваша строка не совсем прав.

Обратная косая черта () является escape-символом и позволяет вам получить специальные символы, которые вы обычно не могли бы вставлять в строку, например «rn», которая представляет символ NewLine или «»», который в основном дает вам символ «.

Чтобы получить символ , вам нужно ввести «\», что именно вы делаете, а также то, что вы хотите.

Использование verbatim (@) заменяет все вхождения на \, поэтому @»» == «\». Обычно это используется для путей и регулярных выражений, где буквальный необходим в больших количествах. Говорить @»C:MyDirectoryMyFile» более удобно, чем «C:\MyDirectory\MyFile».

Ответ №8

Попробуйте это

string s=»abc»; s = s+»\»;

Оцените статью
Добавить комментарий