2013-11-08 20 views
2

У меня есть строка, которая будет выглядеть так.Split a String - java

String str="some data some data some data some data some data some data 
some data some data some data some data some data some data some data 
some data some data some data some data some data some data 
some data some data some data some data some data 
some data some data some data some data some data 
YLOG^2Fri Nov 08 00:58:59 PST 2013^^^^^^^^^^^^^^^^^^^^^latency in nano time : 264414262^ 
YLOG^2Fri Nov 08 00:58:59 PST 2013^^^^ XML after modification :<site name="some data "> 
some data some data some data some data some data some data some data 
some data some data some data some data some data some data 
some data some data some data some data some data 
some data some data some data some data some data some data some data some data some data some data some data some data 
some data some data some data some data some data some data 
some data some data some data some data some data 
some data some data some data some data some data " 

Я хотел бы разделить эту цепочку на детали. В основном мне нужна часть после

^^^^^^ задержки во времени нано:

Это было бы:

264414262^ 
    YLOG^2Fri Nov 08 00:58:59 PST 2013^^^^ XML after modification :<site name="some data "> 
    some data some data some data some data some data some data some data 
    some data some data some data some data some data some data 
    some data some data some data some data some data 
    some data some data some data some data some data some data some data some data some data some data some data some data 
    some data some data some data some data some data some data 
    some data some data some data some data some data 
    some data some data some data some data some data 

Что я пробовал:

String[] splited = str.split("^^^^^latency in nano"); 
Sysout(splitted); 

Но это не сработало для меня. Любая помощь будет оценена по достоинству.

+0

Что выходной выглядеть? –

ответ

2

мне нужна часть после ...

Это мне идти с indexOf в отличие от split

public String getSub(String orig){ 
    String delim = "^^^^^latency in nano"; 

    int idx = orig.indexOf(delim); 
    if(idx != -1){ 
     return orig.substring(idx + delim.length()); 
    } 
    return orig; // delim not found. 
} 
+0

это сделал мой день .. !! спасибо тонна: – rahul888

1

Как только вы разделите, просто получите второй элемент splitted[1]. Это должно дать вам все, после того, что вы разделили.

Есть некоторые проблемы с безопасностью, но он должен работать, если вход всегда постоянный по форме.


Некоторые рекомендации:

Убедитесь, что вход содержит строку вы расщепление и есть содержание после.

-или-

Убедитесь, что длина splitted составляет, по меньшей мере, два перед тем, как второй элемент.


Кроме того, причина, почему выход в Sysout(splitted) не может быть правильно из-за по умолчанию toString() массивов. Вы должны следовать за this при печати массивов.

+0

попытался получить это: rahul888

+0

@ rahul888 Вам необходимо обеспечить выполнение одного из двух условий: вход содержит строку, которую вы ищете, и имеет контент после или длину разделенный массив равен по меньшей мере двум. – Obicere

1

Если ваш "Разделитель" является постоянным, вы можете substring оригинал String с indexOf ваш разделитель + его длина.

Очень некрасиво пример ниже:

String s = "blah^^^^^^^latency in nano time : baz"; 
System.out.println(
     s.substring(
       s.indexOf("^^^^^^^latency in nano time : ") + "^^^^^^^latency in nano time : ".length() 
     ) 
); 

Выход:

baz 

Примечание:

Это не разделить ваш String каким-либо образом. Он просто возвращает то, что после вашего «разделителя».

Также следите за ошибки:

  • Если разделитель не содержится в исходном String, код вернет исходный String «s подстрока, начиная с -1 + длина вашего DELIMITER в
  • Если предыдущее условие применяется, и если длина -1 + вашего DELIMITER является больше, чем ваша длина String, код будет бросать StringIndexOutOfBoundsException во время выполнения
+0

спасибо .. !! :) Я ценю это . :) – rahul888

+0

@ rahul888 приветствую :) – Mena

2

Причина, по которой раскол не работает, заключается в том, что '^' является метасимволом в регулярных выражениях. http://docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html

Если вы действительно хотите использовать раскол, вы должны избежать «^» характер

String[] splitted = str.split("\\^\\^\\^\\^\\^latency in nano"); 
System.out.println(splitted[1]; 

В этом случае, вероятно, лучше всего использовать IndexOf