2016-08-19 90 views
2

在我的Java應用程序中,我需要使用相同的「目標」找到索引和拆分字符串。目標只是一個點。如何拆分無正則表達式

查找索引(通過的indexOf和lastIndexOf)不使用正則表達式,所以

String target = "."; 
String someString = "123.456"; 
int index = someString.indexOf(target); // index == 3 

給我我需要的指數。

但是,我也想用這個「目標」來分割一些字符串。但是現在目標字符串被解釋爲正則表達式字符串。所以,像以前一樣,當我想分割字符串,我不能使用相同的目標串...

String target = "."; 
String someString = "123.456"; 
String[] someStringSplit = someString.split(target); // someStringSplit is an empty array 

所以我需要以下任一操作:

  1. 的一種方式分裂成一個數組由非正則表達式的目標
  2. 到非正則表達式的目標字符串「轉換」成一個正則表達式字符串

有人能幫助的一種方式?你會同意,標準的Java平臺使用正則表達式「split」而不使用「indexOf」的正則表達式有點奇怪嗎?

+1

爲什麼你不能簡單地在分割正則表達式中轉義小數? –

+0

你可以在你的indexOf中使用substring方法,並提取前面的字符串和token之後的字符串。也就是說,如果你真的想避免使用'split'。 – AntonH

+0

@ cricket_007:如果我正確理解你,你建議我使用'target =「\\。」。然後我不能''someString.indexOf(target);' – gromit190

回答

10

您需要轉義您的「目標」才能將其用作正則表達式。 嘗試

String[] someStringSplit = someString.split(Pattern.quote(target)); 

並讓我知道是否有幫助。

1

你可以試試這個。

String target = "."; 
String someString = "123.456"; 
StringTokenizer tokenValue = new StringTokenizer(someString, target); 

while (tokenValue.hasMoreTokens()) { 
    System.out.println(tokenValue.nextToken()); 
} 
+0

謝謝,但我更喜歡將目標字符串包裝成正則表達式。 – gromit190