我正在尝试消除字符串的每个第5个字符,除非该字符是空格或点,然后返回新字符串。
此刻,我似乎只能在每五次出现一次时返回字符,而不能操纵它们并返回新字符串。
示例 原始字串:“詹姆斯打进1球。他的球队获胜。”
新弦乐:“詹姆斯打进1球!他的球队赢了!”
我试图在选择语句中使用for循环,但似乎无法正确操作,然后返回完整的新字符串。
public class TextProcessorTest{
public static void main(String args[]) {
String sentence = "James scored 1 goal. His team won.";
String newSentence;
StringBuffer buff = new StringBuffer();
int len = sentence.length();
for(int i=4;i<len;i=i+5){
char c = sentence.charAt(i);
System.out.print(c);
if(c == ' '){
buff.append(c);
}else if(c == '.'){
buff.append(c);
}else{
buff.append("");
}
}
newSentence = buff.toString();
System.out.println(newSentence);
}
}
预期结果是: “詹姆打进1球!他的球队赢了!”
实际结果是: “ sr。”
答案 0 :(得分:0)
这很简单。只需忽略每个第5个字符,并使用StringBuilder
构建新字符串:
public static String remove(String str) {
StringBuilder buf = new StringBuilder(str.length());
for (int i = 1; i <= str.length(); i++)
if (str.charAt(i - 1) == ' ' || str.charAt(i - 1) == '.' || i % 5 != 0)
buf.append(str.charAt(i - 1));
return buf.toString();
}
StringBuffer
用于并发修改。这是线程安全的。StringBuilder
用于所有非并行修改。