2014-10-05 3 views
0

Я хочу заменить символ \ n пробелом. Следующий код не работает. Какие-либо предложения?replaceAll() function Scanner in Java

System.out.println("Enter a string:"); 
    Scanner sc=new Scanner(System.in); 
    String str=sc.nextLine().toString(); 
    //String str="one\ntwo"; 
    if(str.contains("\\n")){ 
     System.out.println("yes"); 
     str=str.replaceAll("\\n", " "); 
    } 
    System.out.println("str : "+str); 

Строка ввода является один \ Ntwo

+0

возможно дубликат [заменить \ п и \ r \ n с
в java] (http://stackoverflow.com/questions/3056834/replace-n-and-rn-with-br-in-java) –

ответ

1

попробовать это:

str=str.replaceAll("\\\\n", " "); 

ИЛИ

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

Спасибо, это сработало – Somdutta

3

replaceAll("\\n", " ") использует регулярное выражение в качестве первого аргумента и "\\n" лечится регулярных выражений Java как \n, который представляет собой разделитель строк, не \ и n символов. Если вы хотите заменить \n буквенные (два символа) вам необходимо либо

  • escape \ in regex itself по replaceAll("\\\\n", " ");
  • использования replace вместо replaceAll который будет делать отводящей для вас

Предпочтительный способ использует

str = str.replace("\\n", " "); 

BTW sc.nextLine() уже возвращает строку, так что нет никакой необходимости в

sc.nextLine().toString(); 
//   ^^^^^^^^^^^ this part is unnecessary 
+0

Спасибо, это сработало. – Somdutta

+0

@Somdutta Добро пожаловать :) – Pshemo

0

Ваше состояние не является хорошим

if(str.contains("\\n")) -> if(str.contains("\n")) 

все это описать здесь: https://stackoverflow.com/a/5518515/4017037

+0

Кажется, что OP не имеет '\ n' (разделитель строк) в String, но' '\\ n" '' '' '' символ, за которым следует 'n'. – Pshemo