Как разделить строку с несколькими разделителями во время выполнения

Мне нужно написать код Java, который может разделить требуемую строку на основе разделителя, который мы передадим. Количество разделителей тоже может меняться. Пример:

new StringSplit("\.").split("foo.bar#baz")
output = {foo, bar#baz}
new StringSplit("\.", "\#").split("foo.bar#baz")
output = {foo, bar, baz}

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

Не могли бы вы опубликовать образец ввода и ожидаемый результат?

Andrei Suvorkov 10.08.2018 16:32

Что такое StringSplit!

YCF_L 10.08.2018 16:32

@BishnuPrasad Как этот вопрос связан с Selenium? Я что-то пропустил?

DebanjanB 11.08.2018 09:59
1
3
113
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Хорошо, если я могу понять вашу логику, вам понадобится что-то вроде этого:

public static String[] split(String input, String... delimiters) {
    String regex = Arrays.toString(delimiters).replace(", ", "");
    return input.split(regex);
}

Вы можете вызвать свой метод так:

String input = "foo.bar#baz";
String[] result = split(input, "\\.", "#");

Выходы

[foo, bar, baz]

Подробности :

Этот метод принимает строку, которую вы хотите разделить, и переменные разделителей. метод String::split в Java использует регулярное выражение, поэтому вы можете создать регулярное выражение с помощью разделителей. Я просто использую простой трюк, который является Arrays.toString(delimiters), он вернет строковый формат varargs, например [\., #], просто замените ,, чтобы получить класс разделителей [\.#]

Эй ... Вышеупомянутое решение работает нормально ... но как я могу разделить, если разделитель сам запятую. Например, String input = "foo.bar # baz, eat" и split (input, "\\.", "#", "\\,") третий разделитель - запятая (,)

Bishnu Prasad 11.08.2018 11:05

@Bishnu Prasad запятая в java не является специальным символом, поэтому не избегайте ее, как с точкой, просто используйте split (input, "\\.", "#", ",")

YCF_L 11.08.2018 12:23

Другие вопросы по теме