Как мне избавиться от пробелов в этой строке []? - PullRequest
0 голосов
/ 17 мая 2019

Изначально я просто пытался получить символы в строке.Я использовал сплит, чтобы изолировать своих персонажей для подсчетаУ меня есть персонажи, но я не могу избавиться от пробелов, которые он печатает в массиве.

Я перепробовал все, что видел в других сообщениях переполнения стека.

public class Test {

 public static void main(String[] args) {
    String str = "+d+=3=+s+";
    String[] alpha = str.split("[^a-z]");
    for(int i = 0; i < alpha.length; i++) {
      alpha[i] = alpha[i].replaceAll("\\s+", "");
         System.out.println(alpha[i]);
    }

       // System.out.println(alpha.length);
    }

}

I 'm просто пытается считать символы без пробелов и использует больше циклов.

Ответы [ 2 ]

0 голосов
/ 17 мая 2019

Если вы ссылаетесь на пустые строки в выходных данных, это не пробелы , они пустые строки в массиве alpha.

Поскольку вы регулярно проверяете соответствие только одному символу, операция split создаст пустые записи, т. Е. plain split даст следующий массив:

{ "", "d", "", "", "", "", "s", "" }

Поскольку split по умолчанию удаляет завершающие пустые строки, то, что вы на самом деле получаете:

{ "", "d", "", "", "", "", "s" }

Как видите, нет пробелов нигде.

Вы можете удалить большую часть пустых строк, изменив "[^a-z]" на "[^a-z]+", поэтому несколько последовательных не букв будут одним разделителем, который даст вам:

{ "", "d", "s" }

Чтобы удалить начальную пустую строку, сначала удалите начальные не буквы из исходной строки:

String[] alpha = str.replaceFirst("[^a-z]+", "").split("[^a-z]+");

Это даст вам:

{ "d", "s" }

Что, конечно, удалит все пустые строки в вашем выводе:

d
s

И вы можете удалить этот replaceAll("\\s+", "") вызов, поскольку он ничего не делает.

0 голосов
/ 17 мая 2019

Делай так

public class Test {

    public static void main(String[] args) {
        String str = "+d+=3=+s+";
        System.out.println(str);

        str = str.replaceAll("[^a-zA-Z]", "");
        System.out.println(str);
        System.out.println("count "+str.length());
    }

}

Выход будет

ds
count 2

вывод не содержит пробелов, поэтому вы можете избавиться от циклов

...