java删除标点符号的简单程序
我对这个小程序有个小问题。应该使用StringBuilder实例删除标点符号。我没有包括所有的标点符号,但出于某种原因,当我编译这篇文章时,它并没有删除感叹号,而是删除了其他的。很奇怪。这是我的密码:
import java.lang.StringBuilder;
public class Chapter1Reinforcement8 {
public static StringBuilder removePunctuation(StringBuilder s) {
for (int i=0; i<=s.length(); i++) {
if(s.charAt(i)=='!' | s.charAt(i)=='\'' | s.charAt(i)=='.'| s.charAt(i)==','| s.charAt(i)=='?') {
s.deleteCharAt(i);
}
}
return s;
}
public static void main(String[] args) {
StringBuilder s = new StringBuilder("Let's get Mike, Theresa, and Sam.!?");
System.out.println("The old sentence is: " +s);
StringBuilder newSentence = new StringBuilder();
newSentence = removePunctuation(s);
System.out.println("The new sentence is: " +newSentence);
}
}
有人能看到这里的问题吗? 谢谢大家!
# 1 楼答案
您需要向后迭代
StringBuilder
:如果向前迭代,当从位置
i
删除第一个标点符号时,位于i + 1
的字符将成为位于i
的新字符;然后递增i
。如果i
处的新字符是标点符号,则不再检查它# 2 楼答案
在if条件中,需要使用
||
进行OR比较,而不是使用逻辑OR|
。更改此项:到