2013-03-12 55 views
-5

我想提取從該後和期望部分之前滿足特定圖案的串的部分之前提取的字符串的子串:後和在Java指定模式

例如:

String [] s1 = my name is ankit kapoor , my name is mayank gupta , my name is preeti singh ; 

在這裏,我只需要第一個名字,即ankit,mayank,preeti 即在第一空間出現之後。

我已經使用到現在是

String [] final_reult = s1[i].substring((s1.indexof("is")+3) , (s1.lastindexof(" "))); 

顯然即時通訊使用循環中的代碼,即for(int i=o;i<s1.length;i++)

和輸出即時得到的是:ANKIT卡普爾//而不是ANKIT mayank古普塔//代替mayank preeti singh //代替preeti

請幫忙!! 我想使用這種格式只

+2

你知道正則表達式? – 2013-03-12 11:16:54

+1

參見StringUtils類它有很多有用的功能。探索和利用現有的功能http://commons.apache.org/proper/commons-lang/javadocs/api-2.6/org/apache/commons/lang/StringUtils.html – 2013-03-12 11:19:36

回答

0

你可以做到這一點很容易用一個簡單的正則表達式:

public static void main(String[] args) { 
    String[] s1 = {"my name is ankit kapoor", "my name is mayank gupta", "my name is preeti singh"}; 
    final Pattern pattern = Pattern.compile("is ([a-zA-Z]+) "); 
    for (final String string : s1) { 
     final Matcher matcher = pattern.matcher(string); 
     matcher.find(); 
     System.out.println(matcher.group(1)); 
    } 
} 

輸出:

ankit 
mayank 
preeti 

編輯

如果你想使用substring找到您需要模擬正則表達式所需的名字,即找到第一個模式(「是」)和然後沿着String走,直到找到空間。

public static void main(String[] args) { 
    String[] s1 = {"my name is ankit kapoor", "my name is mayank gupta", "my name is preeti singh"}; 
    for (final String string : s1) { 
     final int start = string.indexOf("is ") + 3; 
     int end = start; 
     for (final char c : string.substring(start).toCharArray()) { 
      if (c == ' ') { 
       break; 
      } 
      ++end; 
     } 
     System.out.println(string.substring(start, end)); 
    } 
} 

輸出:

ankit 
mayank 
preeti 
+0

不能使用我的方法,即只使用indexof ? – user21546 2013-03-12 12:25:02

+0

yuppy ...它的作品!如果我想要什麼之後是什麼以及任何跟在它後面的單詞...我使用這種方法: String [] final_reult = s1 [i] .substring((s1.indexof(「is」)+ 3),(s1。指數(」 」))); 但它不工作.. – user21546 2013-03-19 06:19:04

+0

是不是你說的上面描述的完全相同的方法你說不起作用?我不明白你想要什麼。 – 2013-03-19 08:07:07