删除字符串中的每个第5个字符并返回新的String

时间:2019-01-05 20:40:59

标签: java string char stringbuffer

我正在尝试消除字符串的每个第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。”

1 个答案:

答案 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();
}

StringBuilder与StringBuffer

  • StringBuffer用于并发修改。这是线程安全的
  • StringBuilder用于所有非并行修改。