2013-04-24 3 views
2

У меня есть строка, которая разделяется ".", когда я пытаюсь разбить ее на dot, она не изрыгается.Java - Сплит-строка

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

public class TestStringSplit { 
    public static void main(String[] args) { 
     String testStr = "[Lcom.hexgen.ro.request.CreateRequisitionRO;"; 
     String test[] = testStr.split("."); 
     for (String string : test) { 
      System.out.println("test : " + string); 
     } 
     System.out.println("Str Length : " + test.length); 
    } 
} 

Мне нужно отделить вышеуказанную строку и получить только последнюю часть. в вышеуказанном случае это CreateRequisitionRO не CreateRequisitionRO;, пожалуйста, помогите мне это получить.

+0

Я получаю последнее значение, подобное 'System.out.println (« Последнее значение: »+ test [test.length-1]);' также печатает последний как 'CreateRequisitionRO; ', но что я хотите, это 'CreateRequisitionRO', как получить это –

+1

см. мой ответ. вторая часть. –

+0

Возможный дубликат [Метод split() в Java не работает над точкой (.)] (Http://stackoverflow.com/questions/7935858/the-split-method-in-java-does-not-work -on-a-dot) – nhahtdh

ответ

5

Вы можете разбить эту строку через StringTokenizer и получить каждое слово между точкой

StringTokenizer tokenizer = new StringTokenizer(string, "."); 
String firstToken = tokenizer.nextToken(); 
String secondToken = tokenizer.nextToken(); 

Как вы найти для последнего слова CreateRequisitionRO вы также можете использовать

String testStr = "[Lcom.hexgen.ro.request.CreateRequisitionRO;"; 
String yourString = testStr.substring(testStr.lastIndexOf('.')+1, testStr.length()-1); 
+0

+1 для альтернативного решения. – Maroun

+0

Отлично, это то, что я искал, спасибо большое :) –

3

Изменение String test[] = testStr.split("."); по String test[] = testStr.split("\\.");.

Как аргумент String.split принимает регулярное выражение аргумент, вам нужно бежать знак точки (что означает групповой символ в регулярном выражении):

4
String testStr = "[Lcom.hexgen.ro.request.CreateRequisitionRO;"; 
String test[] = testStr.split("\\."); 
for (String string : test) { 
    System.out.println("test : " + string); 
} 
System.out.println("Str Length : " + test.length); 

В «» является шаблоном регулярного выражения, который вам нужно избежать.

3

Обратите внимание, что String.split берет в regular expression и . имеет особое значение в регулярном выражении (что matches any character except for line separator), так что вам нужно, чтобы избежать его:

String test[] = testStr.split("\\."); 

Обратите внимание, что вы избежать . на уровне регулярных выражение один раз: \. и указать \. в строковом литерале, \ необходимо снова экранировать. Итак, строка, которая должна пройти до String.split, равна "\\.".

Или другой способ, чтобы определить его внутри класса символов, где . теряет особый смысл:

String test[] = testStr.split("[.]"); 
1

Сплит принимает регулярное выражение в качестве параметра. Если вы хотите разделить по буквам «.», Вам нужно избежать точки, потому что это специальный символ в регулярном выражении. Попробуйте положить две обратные косые черты перед вашей точкой («\\.») - надеюсь, что делает то, что вы ищете.