Вопросы о работе со строками - PullRequest
1 голос
/ 07 декабря 2011

У меня есть строка типа "C:\Program Files\Directory\Something.txt", и я хотел бы преобразовать ее в "C:\\Program Files\\Directory\\Something.txt", поэтому в основном добавьте \ везде, где найден \. Является ли лучший способ приблизиться к этому, используя indexOf и разбивая строку на sustrings, а затем снова конкатенируя, или есть более эффективный способ сделать это в Java?

Ответы [ 5 ]

2 голосов
/ 07 декабря 2011
String s = "C:/Program Files/Directory/Something.txt";
String s2 = s.replaceAll("/", "//");
// => "C://Program Files//Directory//Something.txt"

[Изменить]

Если в строке есть обратная косая черта , тогда это будет действительно весело, так как это экранирующий символ регулярного выражения. Это должно работать:

String s = "C:\\Program Files\\Directory\\Something.txt";
s.replaceAll("\\\\", "\\\\\\\\");
// => "C:\\\\Program Files\\\\Directory\\\\Something.txt"

Обратите внимание, что в регулярном выражении есть четыре обратных слеша (две пары в последовательности, чтобы получить две буквенные обратные косые черты), а затем восемь в строке замены, поскольку обратные слешы также являются escape-символами для буквенных строк.

1 голос
/ 07 декабря 2011

Вы можете использовать свойство File.separator, чтобы сделать его более кроссплатформенным:

String input = "C:/Program Files/Directory/Something.txt";
String result = input.replaceAll(File.separator, File.separator + File.separator);
0 голосов
/ 07 декабря 2011
String s = "C:/Program Files/Directory/Something.txt";
s = s.replace("/", "//");

Это заменит все / в строке на //

0 голосов
/ 07 декабря 2011
String str = "C:/Program Files/Directory/Something.txt";
str = str.replaceAll("/","//");
0 голосов
/ 07 декабря 2011

Вы можете просто использовать String.replaceAll для этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...