Подтвердить что ты не робот

Разделить строку и обрезать каждый элемент

Есть ли какой-либо библиотечный API или шаблон регулярного выражения для разбиения строки на каком-то разделителе и автоматически обрезать передние и конечные пробелы из каждого элемента без необходимости циклического элемента?

Например, при расщеплении " A B # C#D# E # " на # желаемый результат равен [A B,C,D,E]

Ближайший я получил str.split("\\s*#\\s*"), который дает [ A B, C, D, E]

4b9b3361

Ответ 1

Просто обрезайте его перед разбиением

" A B # C#D# E # ".trim().split("\\s*#\\s*")

Пространства после запятых в [ A B, C, D, E] являются только способом Arrays.toString печатает

Ответ 2

Гуава на помощь! Используйте CharMatcher и Splitter. Я использую Joiner просто для того, чтобы сшить Итерабель обратно вместе, ясно показывая, что в iterable есть только буквы в нем, без заполнения, посторонних пробелов или знаков хеширования.

package main;

import com.google.common.base.CharMatcher;
import com.google.common.base.Joiner;
import com.google.common.base.Splitter;

public class TestMain {

    static Splitter split = Splitter.on(CharMatcher.anyOf(" #")).trimResults()
            .omitEmptyStrings();
    static Joiner join = Joiner.on(", ");

    public static void main(String[] args) {
        final String test = " A B # C#D# E # ";
        System.out.println(join.join(split.split(test)));
    }
}

Вывод:

A, B, C, D, E

Отлично подходит для людей, у которых возникают головные боли при регулярном выражении.

Ответ 3

Как насчет того, чтобы делать замену перед расщеплением?

str.replaceall("\\s*#\\s*","#").split()

Ответ 4

Отредактировано для исправления ошибки пробела, о которой указал Маркус.

Я думаю, что правильное регулярное выражение должно быть [\ s] * # [\ s] *:

str.split("[\\s]*#[\\s]*");

Протестировано: http://regexpal.com/

Ответ 5

Без регулярного выражения он должен выглядеть так:

"  A   B #  C#D# E  #  "
    .split('#')
    .map(function(item) { return item.trim(); } )
    .filter(function(n){ return n != "" });

выходы: [ "A B", "C", "D", "E" ]