Как разделить строку с помощью разделителя массива символов в Java? - PullRequest
2 голосов
/ 15 июля 2011

как c #:

string[] Split(char[] separator, StringSplitOptions options)

есть ли эквивалентный метод в Java?

Ответы [ 7 ]

5 голосов
/ 15 июля 2011

Это делает то, что вы хотите:

public static void main(String[] args) throws Exception
{
    char[] arrOperators = { ',', '^', '*', '/', '+', '-', '&', '=', '<', '>', '=', '%', '(', ')', '{', '}', ';' };
    String input = "foo^bar{hello}world"; // Expecting this to be split on the "special" chars
    String regex = "(" + new String(arrOperators).replaceAll("(.)", "\\\\$1|").replaceAll("\\|$", ")"); // escape every char with \ and turn into "OR"
    System.out.println(regex); // For interest only
    String[] parts = input.split(regex);
    System.out.println(Arrays.toString(parts));
}

Вывод (включая последнее регулярное выражение только для информации / интереса):

(\,|\^|\*|\/|\+|\-|\&|\=|\<|\>|\=|\%|\(|\)|\{|\}|\;)
[foo, bar, hello, world]
1 голос
/ 15 июля 2011

Взгляните на public String[] split(String regex) и java.util.regex.

1 голос
/ 15 июля 2011
String[] split(String)

Вы можете превратить char[] в строку с String(char[]).

0 голосов
/ 15 июля 2011

Goold ol 'StringTokenizer тоже сделает это:

public static void main(String[] args) {
    String delim = ",^*/+-&=<>=%(){};";
    String str = "foo^bar{hello}world";
    StringTokenizer tok = new StringTokenizer(str, delim);
    while (tok.hasMoreTokens()) {
        System.out.println(tok.nextToken());
    }
}
0 голосов
/ 15 июля 2011

Еще один уровень функциональности - это Splitter от Guava :

Splitter splitOnStuff = Splitter.on(CharMatcher.anyOf("|,&"))
                                .omitEmptyStrings();

Iterable<String> values = splitOnStuff.split("value1&value2|value3,value4");
0 голосов
/ 15 июля 2011

Вы должны использовать Regex, чтобы достичь этого.Это скажет это, на каком основании вы должны отделиться.Как есть ИЛИ "|"оператор.Если вы используете

String regex = "a|b|c";
String[] tokens = str.split(regex)

Он будет разделен на a, b & c.

0 голосов
/ 15 июля 2011

Возможно, вы хотите этого.Я не уверен:

    String text = "abcdefg";
    System.out.println(Arrays.toString(text.split("d|f|b")));

Результат:

   [a, c, e, g]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...