Как разбить слово не один символ в Java? - PullRequest
1 голос
/ 13 сентября 2011

Я бы хотел разделить эту строку словом «data ::», а не одним символом. Как?

String bla = "data::01000100010001000100data::0101001010101010101data::11111111111111111";
String result[] = bla.split("\\data::");
/*
 * this outputs the whole string
 * instead of only: 01000100010001000100*/
System.out.println(result[0]); 

Примечание:

    package test;        
    public class NewClass 
    {    
        public static void main(String[] args) 
        {     
          String bla = "data::0000data::1111data::010101";

          // Try 1 - failed
          String[] parta = bla.split("\\ddata::");
          System.out.println(parta[0]);        
          System.out.println(parta[1]);        
          System.out.println(parta[2]);        

          // Try 2 - failed -- works
          String[] partb = bla.split("data::");
          System.out.println(partb[0]); // consider as empty
          System.out.println(partb[1]); // starts from here
          System.out.println(partb[2]); 

          // Try 3 - failed
          String partc[] = bla.split("\\wdata::");
          System.out.println(partc[0]);        
          System.out.println(partc[1]);        
          System.out.println(partc[2]);                            
        }
    }

Ошибка вывода:

run:
data::000
111
010101

0000
1111

data::000
111
010101

BUILD SUCCESSFUL (total time: 0 seconds)

Ответы [ 3 ]

6 голосов
/ 13 сентября 2011

\\d внутри строкового литерала обозначает цифру в регулярном выражении.Вам нужно просто разделить на это:

bla.split("data::")

Поскольку ни одна цифра не следует за ata:: (шаблон: "\\data::"), вся строка возвращается String.split(...).

3 голосов
/ 13 сентября 2011

Попробуйте класс Splitter Guava Splitter

Iterable<String> result = Splitter.on("data::").split(bla);

Хорошо, смотреть на другие ответы может быть излишним, но стоит проверить.Это действительно хороший инструмент, поскольку он позволяет такие вещи, как "omitEmptyStrings" и "trimResults".

3 голосов
/ 13 сентября 2011
String bla = "data::01000100010001000100data::0101001010101010101data::11111111111111111";
String result[] = bla.split("data::");

Тест -

System.out.println(result[0]) //empty
System.out.println(result[1]) //01000100010001000100
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...