2015-01-16 2 views
0

EDIT: Не дубликат, по крайней мере, не такая же проблема, как у парня в связанном вопросе, он вызвал string.replace (...) без сохранения результатов. Я использовал замену вместо replaceALL, которая позволяет использовать регулярные выраженияJava, заменяющий n в String

В настоящее время у меня возникла странная проблема. Я пытаюсь удалить все пробелы из строки. Но почему-то это не работает для меня. Вот скриншот функции, которую он я использую и результаты, которые я получаю от отладчика:

enter image description here

Вот функция, я использую:

public static boolean contentCompare(String s1, String s2) { 
    String s3 = s1.replace("\\s", ""); 
    s3 = s3.replace("\\\\n", ""); 
    s3 = s3.replace("\\n", ""); 
    return s1.equals(s2); 
} 

При отладке это я получаю эти значения для s1 и s3:

s1: \n\nWLS-Thread-Pool\nWLS-Thread-Pool\n\nClient\nClient\n\nDBS-Conn-Pool\nDBS-Conn-Pool\n\nDBS-Process-Pool\nDBS-Process-Pool\n\nWLS-CPU\nWLS-CPU\n\nDBS-PQ\nDBS-PQ\n\nDBS-CPU\nDBS-CPU\n\nDBS-I/O\nDBS-I/O\n\n\n\n

s3: \n\nWLS-Thread-Pool\nWLS-Thread-Pool\n\nClient\nClient\n\nDBS-Conn-Pool\nDBS-Conn-Pool\n\nDBS-Process-Pool\nDBS-Process-Pool\n\nWLS-CPU\nWLS-CPU\n\nDBS-PQ\nDBS-PQ\n\nDBS-CPU\nDBS-CPU\n\nDBS-I/O\nDBS-I/O\n\n\n\n

Любые идеи, почему \n не удаляются?

+2

Вы заметили, что ваш оператор возврата 'возврата s1.equals (s2),' 'игнорирует s3'? – Tom

+1

Ух, мой вопрос не является дубликатом этого, другая проблема с парнями заключалась в том, что он не знал, что замена не меняет сама строка, но возвращает результат. моя проблема была глупа :-P –

ответ

-1

Используйте

s3.replaceAll("\n",""); 

вместо

s3.replace("\n",""); 
+0

Заменить тоже хорошо: «Заменяет каждую подстроку этой строки, которая соответствует литеральной цели последовательность с указанной последовательностью замены литерала ». https://docs.oracle.com/javase/6/docs/api/java/lang/String.html#replace(java.lang.CharSequence, java.lang.CharSequence) – bedrin

+1

Поскольку '\ n' - всего лишь один символ, отлично использовать' # replace'. Не путайтесь с этим '' All "'. Это не значит, что это заменит * все * вхождения (другой делает это также), это просто означает, что этот метод может заменить более одного String. '# replaceAll' позволяет использовать регулярное выражение,' # replace' не делает. – Tom

+0

Это исправило другую проблему, которая у меня была, мой первый повтор Место (\ s) фактически ничего не делает.с помощью replaceAll ("\ s", "") он правильно решает мою проблему –

2

Это должно сделать трюк:

s3 = s3.replace("\n", ""); 
+0

Бог, черт возьми, теперь я чувствую себя глупо :-) Это работает. Я как-то удаляю свой вопрос сейчас/отмечаю его как решенный? Я новичок в размещении на таком –

+0

@SimonEismann Просто отметьте ответ как принятый – bedrin

+0

он говорит, что мне все еще нужно подождать 10 минут, чтобы принять его :-( –

1

Попробуйте с ниже код

s3= s3.replaceAll("\\s+","") 
1
replace(CharSequence target, CharSequence replacement) 

Заменяет каждую подстроку этой строки, которая соответствует буквальной целевой последовательности с указанной последовательностью замены литерала.

вам нужно заменить \n на "" то есть пустой

s3 = s3.replace("\n", ""); 
+1

@Tom thanks tom отредактировал мой ответ –

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