Строка в коллекцию с пустой строкой - PullRequest
0 голосов
/ 22 октября 2019

У меня есть следующая строка:

,Test1,,Test2

И я хочу поместить ее в коллекцию следующим образом:

[],[Test1],[],[Test2]

Мой код

    public static void stringToCollectionEmpty(String separator, String str, Collection col) {

    if (str != null) {
        StringTokenizer tok= new StringTokenizer(str, separator);
        String nextToken;
        while (tok.hasMoreTokens()) {
            nextToken = tok.nextToken();
            if (nextToken != null && nextToken.trim().length() > 0) {
                col.add(nextToken.trim());
            }
        }
    }
}

Iтолько получить

[Test1],[Test2]

Но я хочу также поместить данную пустую строку до и между запятой в коллекции.

Ответы [ 4 ]

3 голосов
/ 22 октября 2019

Использование функционального программирования:

public static void main(String[] args) {
    String s = ",Test1,,Test2";

    List<String> collect = Arrays.stream(s.split(","))
            .map(t -> "[" + t + "]")
            .collect(Collectors.toList());

    System.out.println(collect);
}

Вывод:

[[], [Test1], [], [Test2]]

Если вам не нужны дополнительные скобки вокруг ваших String s, вы можетевместо этого просто используйте:

List<String> collect = Arrays.asList(s.split(","));
2 голосов
/ 22 октября 2019

Вы вручную переместили пустые строки на

if (nextToken != null && nextToken.trim().length() > 0) {

Возможно, вы захотите:

    while (tok.hasMoreTokens()) {
        nextToken = tok.nextToken();
        // if you need replace blank string with empty string, keep next line
        // nextToken = nextToken.trim()
        col.add(nextToken);
    }
0 голосов
/ 22 октября 2019
public static void stringToCollectionEmpty(String separator, String str, Collection col) {

if (str != null) {
    StringTokenizer tok= new StringTokenizer(str, separator);
    String nextToken;
    while (tok.hasMoreTokens()) {
        nextToken = tok.nextToken();
        if (nextToken != null && nextToken.trim().length() >= 0) {
            col.add(nextToken.trim());
        }
    }
}

}

0 голосов
/ 22 октября 2019

nextToken.trim().length() > 0 ложно для пустых строк, поэтому они не добавляются в коллекцию

...