2014-02-17 2 views
0

Мне нужно вставить пробел после каждого символа в строке.Вставьте пробел после каждого символа - java

Например "abc.def..."

должен стать "abc. def. . . "

Таким образом, в этом случае данный символ является точка.

Мой поиск в гугле не принес никакого ответа на этот вопрос

Я действительно должен пойти и получить некоторые серьезные регулярки знания.

EDIT: -------------------------------------------- --------------

String test = "0:;1:;"; 
test.replaceAll("\\:", ": "); 
System.out.println(test); 

// output: 0:;1:; 
// so didnt do anything 

РЕШЕНИЕ: --------------------------- ----------------------------

String test = "0:;1:;"; 
**test =** test.replaceAll("\\:", ": "); 
System.out.println(test); 
+1

вам нужно использовать string.replace (" "".") –

+0

replaceAll() принимает регулярное выражение в качестве первого параметра. ":" не имеет специального значения внутри регулярного выражения, поэтому вам не нужно его избегать. После удаления двойной обратной косой черты ваш код должен работать нормально. – tangens

+0

@tangens no it sadly does not – user2664856

ответ

6

Вы можете использовать String.replaceAll():

String input = "abc.def..."; 
String result = input.replaceAll("\\.", ". "); 
// result will be "abc. def. . . " 

Edit:

String test = "0:;1:;"; 
result = test.replaceAll(":", ": "); 
// result will be "0: ;1: ;" (test is still unmodified) 

Edit:

Как сказано в других ответах, String.replace() все, что нужно для этого простого замещения. Только если это регулярное выражение (как вы сказали в своем вопросе), вы должны использовать String.replaceAll().

+0

Я уже исправил это. Благодарю. – tangens

+0

, пожалуйста, проверьте мои изменения выше – user2664856

+0

Нет, это не совсем подходит тем, что хочет OP. Он/она хочет иметь возможность сделать это для ЛЮБОГО персонажа, а не только для точки. При таком решении некоторым символам потребуется предыдущая обратная косая черта, а некоторые - нет. Вам нужно будет использовать 'Pattern.quote', если вы хотите сделать замену с помощью' replaceAll', и это позволит разобраться, нужен ли циферблат. Однако для этой конкретной задачи гораздо проще использовать 'replace', а не' replaceAll'. –

0

Если вы хотите простую грубую силу техники. Следующий код сделает это.

String input = "abc.def..."; 
StringBuilder output = new StringBuilder(); 
for(int i = 0; i < input.length; i++){ 
    char c = input.getCharAt(i); 
    output.append(c); 
    output.append(" "); 
} 
return output.toString(); 
Смежные вопросы