Я хочу проверить последний символ строки на наличие символов, которые не являются символами, не являющимися словами, используя '\ W', и разрешить определенные символы, такие как ".,! И т. Д." В верхней части головы, которые я подумал об использовании код похож на этот.
Boolean notCompleted = true;
int deduct = 1;
while(notCompleted){
if(string.charAt(string.length() -deduct) == '\W'){ // '\W' <-- doesn't work since it accepts anything other than "escape sequences".
if(string.charAt(string.length() -deduct) == '.'||string.charAt(string.length() -deduct) == ','||string.charAt(string.length() -deduct) == '!'){
//Do nothing and move on to the while loop
}else{
//Replace the non word character with ' '.
}
}
deduct++;
if(deduct >= html.length()){
notCompleted = false;
}
}
Причина, по которой это не работает, заключается в том, что при использовании string.charAt допускается только «Escape-последовательность».
У меня вопрос, есть ли другой способ сделать это, а не делать.
string.replaceAll("\W", "");
Все предложения с благодарностью. Спасибо.
Благодаря подсказке, которую мне дал npinti, я создал этот код. Однако я получаю строку ошибки
Желаемый результат fakeNewString в соответствии с запросом должен быть "! Asdsdefwef., A ,, sda.sd";
fakeNewString = sb.toString(); // NullPointerException
public static void test5(){
Boolean notCompleted = true;
String fakeNewString = "!@#$%^&*( asdsdefwef.,a,,sda.sd";
int start = 0, end = 1;
StringBuilder sb = null;
try{
while(notCompleted){
start++;
String tempString = fakeNewString.substring(start, end);
if(Pattern.matches("\\W$", tempString)){
if(Pattern.matches("!", tempString)||Pattern.matches(".", tempString)||Pattern.matches(",", tempString)||Pattern.matches("\"", tempString)){
//do nothing
sb.append(tempString);
}else{
//Change it to spaces.
tempString = " ";
sb.append(tempString);
}
}
end++;
if(end >= fakeNewString.length()){
notCompleted = false;
fakeNewString = sb.toString();
System.out.println(fakeNewString);
}
}
}catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}