2015-04-12 174 views
0

雖然我已經問過關於類似問題的一個問題,那就是如何讓JAVA將一個String行分成兩部分,我沒有得到我想要的結果。我的項目涉及邏輯電路(門,導線,信號,聯繫...)。我在下面的方法需要做的是SEPARATE傳入聯繫人傳出的。如果有傳入方法字​​符串是A B C -> DA B C是傳入和D是傳出聯繫人。我的代碼讀取符號->之前的所有內容,但是我需要在該符號之後讀取,以免忽略符號本身。我必須單獨測試incoming contactsoutgoing contacts,測試也在下面。可以幫助嗎?讀取某個符號之前和之後的字符串

private List<Contact> inputs; 
    private List<Wire> innerWires; 

    public void parseContactsLine(String line) 
      { 

     String[] words = line.split(" "); 


       for(int i = 0; i < words.length; i++) 
       { 
        if(!(words[i].equals("->"))) 
        { 
         Wire wire1 = new Wire(words[i]); 
         ///Wire wire2 = new Wire(words[i]); 
         innerWires.add(wire1); 
         //innerWires.add(wire2); 
         Contact contact = new Contact(wire1, wire1, true); 
         inputs.add(contact); 
         outputs.add(contact); 
        } 
        else 
         break; 
       } 
     } 

我從這段代碼的輸出是[A B C]

我的測試情況是:

List<Contact> ins = Arrays.asList(new Contact[]{ 
     new Contact(new Wire("A"), new Wire("A"), true), 
     new Contact(new Wire("B"), new Wire("B"), true), 
     new Contact(new Wire("C"), new Wire("C"), true)} 
    ); 
    List<Contact> outs = Arrays.asList(new Contact[]{ 
     new Contact(new Wire("D"), new Wire("D"), false)} 
    ); 

注意incoming contactsoutgoing contacts分別測試了!不要太在意WireContact會員。它們被正確定義。

回答

1

試試這個

String[] array = "A B C -> D".split("->"); 
    //splits your string into two strings, and stores them in an array 
    //array[0] = "A B C " -- all elements before -> 
    //array[1] = " D" -- all elements after -> 
    String[] input = array[0].trim().split(" "); 
    // trim is used to remove trailing/leading white spaces 
    String[] output = array[1].trim().split(" "); 
+0

什麼做的數組[0]和陣列[1]與裝飾一起代表( )? @ coder – Inferno

+0

首先基於「 - >」進行分割,這會將你的字符串分成兩部分「A B C」(數組[0])和「D」(數組[1])。修剪用於去除尾隨和前導空白。然後你可以在空白處分割它們以獲得單獨的輸入A,B,C和D – coder

+0

你的代碼接近我想要的!在此基礎上,我改變了我的方法,謝謝! – Inferno

0

可以循環的話陣列,直到你找到 - >符號。當你找到符號時,你實際上已經在數組中找到了 - >的索引。所以,你可以循環的單詞,像一個東西又陣列:for(int x = symbolIndex + 1; x < words.lenght; x++)

(symbolIndex + 1,保證環路的忽略符號)

相關問題