我试图消除字符串的每个第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); }}预期结果是:“詹姆(Jame)攻入1球!他的球队获胜!”实际结果是:“ sr ...”。
1 回答
慕容3067478
TA贡献1773条经验 获得超3个赞
这很简单。只需忽略每个第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();
}
StringBuilder与StringBuffer
StringBuffer用于并发修改。这是线程安全的。
StringBuilder 用于所有非并发的修改中。
添加回答
举报
0/150
提交
取消