Удаление каждого 5-го символа в строке и возврат новой строки - PullRequest
0 голосов
/ 05 января 2019

Я пытаюсь удалить каждый 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 гол! Его команда выиграла!»

Фактический результат: "ср."

1 Ответ

0 голосов
/ 06 января 2019

Это довольно просто. Просто игнорируйте каждый 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 использовать во всех несовпадающих модификациях.
...