2016-04-29 2 views
2

Я попытался инициализировать строковую переменную до пути к одному из файлов. Он сообщает, что escape-последовательность недействительна. Любое решение?Как избежать escape-последовательности в строковой переменной

String s="F:\abc\xyz.txt"; 
+0

Любой конкретный язык? –

+3

Символ «\» имеет особое значение для «экранирования» или изменения значения следующего символа («\ t» означает, например, символ табуляции). Поскольку у него есть задача создания escape-последовательностей, если вам действительно нужен символ \ в вашей строке, вам нужно использовать escape-последовательность «\\», которая будет переведена на символ \. –

+0

Спасибо большое .. Это работает как шарм :) – Kyrie

ответ

0

Преобразование @Hank D и @ комментарии осада на ответ:

В Java и C# (это трудно сказать, какой язык вы используете здесь, но это, вероятно, один из этих двух), то символ обратной косой черты \ используется для запуска управляющих последовательностей, которые вы можете использовать для включения специальных символов в строку, которые вы обычно не можете вводить на клавиатуре, иначе это могло бы вызвать проблемы. Например, вы можете поместить строку в строку, написав \n:

String multiline = "This String\nSpans Multiple\nLines!"; 

Вы можете включать в себя символы Unicode с \U последовательности:

String heart = "I \U2764 Escape Sequences!"; 

И вы можете включить вложенные кавычки с \" последовательности:

String quotation = "Quoth the raven, \"Nevermore.\""; 

в вашем случае, вы пытаетесь использовать \ характер как разделитель путей, но Java/C# интерпретирует то, что вы делаете, пытаясь построить недопустимые escape-последовательности. То есть строка

F:\abc\xyz.txt 

становится истолковано как

F:(\a)bc(\x)yz.txt 

Чтобы исправить это, вы можете использовать тот факт, что последовательность выхода \\ обозначает обратную косую черту и написать строку так:

Удовлетворительный факт: причина, по которой обратная косая черта была выбрана в качестве разделителя путей в Java/C#, заключается в том, что она была выбрана таким образом на C, потому что этот символ так редко использовался ... d затем появился DOS/Windows и сломал все. :-)

Кроме того, в C#, вы можете написать

String s = @"F:\abc\xyz.txt"; 

Символ @ префикс отключает управляющие последовательности в строке, что делает вещи намного легче читать.

Смежные вопросы