删除字符串中的每 5 个字符和 return 新字符串

Removing every 5th char in a string and return new String

我试图消除字符串中的每第 5 个字符,除非该字符是 space 或点,并且 return 是新字符串。

目前我似乎只能 return 每五次出现一次的字符,但不能操纵它们和 return 新字符串。

例子 原始字符串:"James scored 1 goal. His team won."

新字符串:"Jame scoed 1 goal! His team won!"

我尝试使用带有选择语句的 for 循环,但似乎无法正确操作,然后 return 完整的新字符串。

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 scoed 1 goal! His team won!"

实际结果是: "sr . . "

这很简单。只需忽略每 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 在所有非并发修改中使用。