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

Вопрос:

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

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

Ответ №3
string 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+="\";

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

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

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

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

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

Ответ №8

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

 string s="abc";
s = s+"\\";

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