Удалить '\ 0' из строки Java - PullRequest
0 голосов
/ 30 мая 2018

Я хочу удалить "\0" из моего java String
Ввод: "/Test/Test20\06"
Результат: "/Test/Test206"
Как это сделать?

Ответы [ 3 ]

0 голосов
/ 30 мая 2018

Здесь у вас есть String с восьмеричным значением.

System.out.println(
    Arrays.toString(
        "/Test/Test20\06".toCharArray()
    )
);

[/, T, e, s, t, /, T, e, s, t,2, 0,]

Последний символ не печатается, поскольку числовое значение равно 6 (\ 06` в восьмеричном) и не является видимым символом.Это символ ACK.

Таким образом, вы не сможете заменить \0 с помощью метода замены регулярного выражения или String, поскольку это не String, а часть представления символа

Мы можем подтвердить это, заменив некоторый символ на регулярное выражение (не то решение, которое вам нужно, просто для демонстрации)

String s = "/Test/Test20\06";
System.out.println(s.replaceAll("[\\000-\\011]", "?"));

/ Test / Test20?

Таким образом, вы можете использовать Pattern для захвата этих значений и преобразования их в соответствии с вашими потребностями.Вот небезопасное решение (регулярное выражение соответствует вашему случаю, когда восьмеричное находится в конце.

String s = "/Test/Test20\06";
Pattern p = Pattern.compile("(.*?)([\\000-\\011])");
Matcher m = p.matcher(s);

StringBuilder sb = new StringBuilder();
while(m.find()){
    sb.append(m.group(1)).append("" + (int)(m.group(2).charAt(0)));
}
System.out.println(Arrays.toString(sb.toString().toCharArray()));

[/, T, e, s, t, /, T, e, s, т, 2, 0, 6]

или в тексте:

/ Test / Test206

0 голосов
/ 30 мая 2018

В качестве ввода "/Test/Test20\06", "\" действуют как escape-последовательность.но в этом случае он действует как значение ASCII.чтобы преодолеть проблему, приведите строку к массиву символов.затем извлеките последнее значение и приведите к int.

решение:

String s = "/Test/Test20\06";
char[] c= s.toCharArray();
String ss="";
for(int i= 0; i<c.length-1;i++){
  ss+=c[i];
}
ss+=(int)c[c.length-1];
System.out.println(ss); 
0 голосов
/ 30 мая 2018

Чтобы получить новую строку с заменой "\":

newStringName = oldStringName.replace("\\", "");

Надеюсь, это поможет.

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