2015-05-01 2 views
1

Я пытаюсь изменить все буквы в StringBuilder на дефисы и оставить все небуквенные значения в одиночку (например, пробелы апострофы и т. Д.), Как я мог это сделать без перечисления и сравнения всех букв, это возможноStringBuilder Проверка на буквенные значения

private StringBuilder puzzle = new StringBuilder("I'm the cat") 
for (int i = 0; i < guess.length(); i++) { 
    if (puzzle.charAt(i) == ' '){ 
     puzzle.setCharAt(i, ' ');  } 
    else 
     puzzle.setCharAt(i, '-'); 
    } 

Так результат будет что-то вроде (-'- --- ---)

+0

Может использовать [регулярное выражение] (https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html)? – moarCoffee

+0

Класс Character имеет isLetter() или какой-либо подобный метод, который может быть полезен. –

ответ

1

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

import java.util.regex.Pattern; 

. 
. 
. 

Pattern p = Pattern.compile("\\w"); 

String s = p.matcher("I'm the cat").replaceAll("-"); 

System.out.println(s); // prints "-'- --- ---" 

Вы можете использовать <string>.replaceAll("\\w", "-"), но если вы собираетесь делать много замен в методе, то технически более эффективно скомпилировать Pattern заранее (хотя, по общему признанию, не очень сильно в этой ситуации).

1

Try replaceAll():

System.out.println("I'm the cat".replaceAll("\\w", "-")); //prints: -'- --- ---