Как разбить строку на несколько разделителей, хранящихся в списке? - PullRequest
3 голосов
/ 29 мая 2020

У меня есть список разделителей, например

List<String> delimiters= Arrays.asList(",",".");

Если у меня есть строка типа "a.b,c".

Как разделить на все разделители?

Ответы [ 5 ]

2 голосов
/ 29 мая 2020

Вы можете использовать регулярное выражение.

@Test
public void test() {
    List<String> delimiters = Arrays.asList(",", ".", "?");
    String str = "a.b,c?dr";

    StringBuilder regex = new StringBuilder();
    regex.append("[");
    delimiters.stream().forEach(delimiter -> regex.append(delimiter + "/"));
    regex.append("]");

    String[] result = str.split(regex.toString());
}
2 голосов
/ 29 мая 2020

Пожалуйста, проверьте приведенный ниже код, решает ли он вашу проблему:

List<String> delimiters = Arrays.asList(",", ".", "?", ":");

for (String delimiter : delimiters) {
  text = text.replace(delimiter, " "); //replace all delimiter occurrence with space
}

String[] output = text.split(" "); //split using space
0 голосов
/ 29 мая 2020

Вот код:

import java.util.Arrays;
import java.util.List;

public class StringSplitMultipleDelimeter {

    public static void main(String[] args) {
        List<String> delimiters= Arrays.asList(",",".","!","?","$","&","^","%","@");
        String givenString = "Test,String.with?Multiple@delimeters!example";
        //Create Regex to split sting
        StringBuilder regex = new StringBuilder();
        regex.append("[");
        delimiters.forEach(delimeter -> regex.append(delimeter));
        regex.append("]");
        String[] tokens = givenString.split(regex.toString());
        System.out.println("Number of tokens = " + tokens.length);
        for(int i =0; i<tokens.length; i++) {
            System.out.println(tokens[i]);
        }
    }
}
0 голосов
/ 29 мая 2020
    String s = "a.b,c";
    String[] split = s.split("[.|,]");

как насчет этого? Используйте «|» для разделения нескольких разделителей , не забудьте добавить [], в противном случае его нужно экранировать

0 голосов
/ 29 мая 2020

Вы можете сначала использовать replaceAll в строке и преобразовать все это в фиксированный разделитель (на ваш выбор) следующим образом - затем вы можете разделить его на основе этого:

String[] newArray = stringArray.replaceAll("[\\.]", ",").split(",");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...