2014-03-29 177 views
1

我是java的新手,我被困在一個函數中。在特殊字符前匹配字符串

我有一個字符串:"test lala idea<I want potatoes<"

我想數學"<"之前的文本。

例如:

Str[0] = test lala idea 
Str[1] = I want potatoes 

我嘗試使用正則表達式,但everythig沒有奏效。 那麼如果有人有一個想法? 對不起我的英語技能。 謝謝。

+0

感謝您編輯@ZouZou – user3476624

+0

窺視'分裂()'函數在String類谷歌的Javadoc中 – Kon

+0

什麼是正則表達式/代碼你。用過了嗎?它可能沒有在第二個<之前匹配所有文本的貪婪匹配。 –

回答

5

這是一個解決方案:

public static void main(String [] args) 
{ 
    String test = "test lala idea<I want potatoes<"; 

    String piecesOfTest[] = test.split("<"); 
    // if you need to split by a dot you need to use "\\." 

    System.out.println(piecesOfTest[0]); 
    // prints "test lala idea" 
    System.out.println(piecesOfTest[1]); 
    // prints "I want potatoes" 

    // Here goes a for loop in case you want to 
    // print the array position by position 

} 

在這種情況下分割以 「測試拉拉想法」(從beginnning推移,直到第一 '<')和節省內部piecesOfTest [0](這只是一個解釋)。然後將「我想要的土豆」(從第一個'<'實現第二個'<')和保存到塊測試1,所以數組的下一個位置。

如果你想在一個循環中,你可以按照下面的步驟打印此(這個循環應該放在.split(regex)只運行後:

for(int i = 0; i < piecesOfTest.length; i++){ 

    // 'i' works as an index, so it will be run for i=0, and i=1, due to the condition 
    // (run while) `i < piecesOfTest.length`, in this case piecesOfTest.length will be 2. 
    // but will never be run for i=2, due to (as I said) the condition of run while i < 2 

    System.out.println(piecesOfTest[i]); 

} 

只是爲了學習的緣故,爲ambigram_maker說,你也可以使用一個「每個」結構:

for (String element: piecesOfTest) 

    // for each loop, each position of the array is stored inside element 
    // So in the first loop piecesOfTest[0] will be stored inside element, for the 
    // second loop piecesOfTest[1] will be stored inside element, and so on 

    System.out.println(element); 

} 
+0

謝謝你,但你有想法做一個循環打印在控制檯? @ederollora – user3476624

+0

回答!代碼已更新 – ederollora

+0

請標記我的答案爲正確的,以便我們可以關閉此問題。謝謝 – ederollora