2014-05-16 111 views
2

我剛開始學習java,所以請不要介意。 我有串根據java中的多個字符串分割字符串

String test="John Software_Engineer Kartika QA Xing Project_Manager Mark CEO Celina Assistant_Developer"; 

我想基於的Company={"Software_Engineer", "QA","Project_Manager","CEO ","Assistant_Developer"}位置分裂;

EDITED:

如果以上是困難然後是有可能???基於或{AND,OR)

String value="NA_USA >= 15 AND NA_USA=< 30 OR NA_USA!=80" 
String value1="EUROPE_SPAIN >= 5 OR EUROPE_SPAIN < = 30 " 

如何分割,並把在哈希表在java中。最後如何從最終訪問它。這不是必要的,但我主要關心的是如何拆分。

下一頁編輯:

我從這個解決方案,它是最好的主意或沒有????

String to="USA AND JAPAN OR SPAIN AND CHINA"; 
String [] ind= new String[]{"AND", "OR"}; 
    for (int hj = 0; hj < ind.length; hj++){ 
to=to.replaceAll(ind[hj].toString(), "*"); 
    } 
    System.out.println(" (=to=) "+to); 

    String[] partsparts = to.split("\\*"); 
    for (int hj1 = 0; hj1 < partsparts.length; hj1++){ 
    System.out.println(" (=partsparts=) "+partsparts[hj1].toString()); 
    } 

List<String> test1=split(to, '*', 1); 
System.out.println("-str333->"+test1);   

新編輯:

如果我有這種類型的字符串怎麼能分裂:

final String PLAYER = "IF John END IF Football(soccer) END IF Abdul-Jabbar tennis player END IF Karim -1996 * 1974 END IF"; 

我怎樣才能像這個:String [] data=[John , Football(soccer) ,Abdul-Jabbar tennis player, Karim -1996 * 1974 ]

你有什麼想法?

+3

將各個名字和位置放在同一行上並不是一個好主意,除了空格之外沒有任何分隔符。這將使分裂不可行;你最好自己解析字符串。 – Makoto

+0

檢查我編輯的問題,這是可行的分裂。 –

+0

@ user3643373不是真的,因爲程序很難說「QA」是一個位置而不是名稱,沒有位置列表(除非用大寫字母表示) – awksp

回答

0

試試這個

String[] a = test.replaceAll("\\w+ (\\w+)", "$1").split(" "); 

在這裏,我們先用第二個字替代字對,然後通過空間

+0

好的,先生。請等待我的迴應。 –

+0

@Evgeniy Dorofeev你能簡單解釋一下你的答案嗎?這會讓你的答案對其他人更有用。 –

+0

是的,我同意@MohitJain,因爲我是初學者,很難理解如何正確地工作。 –

1

這將拆分您的字符串爲您和其存儲在一個字符串數組(最大尺寸50分裂)。

private static String[]split = new String[50]; 
    public static void main(String[] args) { 


    String test="John -Software_Engineer Kartika -QA Xing -Project_Manager Mark -CEO Celina -Assistant_Developer"; 

    for (String retval: test.split("-")){ 

     int i = 0; 
     split[i]=retval; 

     System.out.println(split[i]); 
     i++; 
     } 

     } 
+0

你明白我的問題嗎?請再次看到我的問題,謝謝你的迴應先生。我想基於某些字符串而不是空間進行分割,根據空間的不同,在互聯網上找到很多簡單的教程,但是基於我的問題。我沒有找到,所以我創建我的問題。 –

+0

你好,好吧,將'/'或' - '加入你想要分割的字符串會更容易。 –

+0

請參閱我的編輯版本。這是拆分字符串的最佳方法。 –

0

你可以把一組裏面有所有位置就像

Set<String> positions = new HashSet<String>(); 
     positions.add("Software_Engineer"); 
     positions.add("QA"); 
     String test="John Software_Engineer Kartika QA Xing Project_Manager Mark CEO Celina Assistant_Developer"; 
     List<String> positionsInString = new ArrayList<String>(); 
     Iterator<String> iterator = positions.iterator(); 
     while (iterator.hasNext()) { 
     String position = (String) iterator.next(); 
     if(test.contains(position)){ 
      positionsInString.add(position); 
      break; 
     } 
     } 
1

你可以用名稱的字符串:崗位和空間。那麼它將很容易獲得慾望值。

String test="John:Software_Engineer Kartika:QA Xing:Project_Manager" 
1

我無法評論,因爲我的聲望較低。因此我在這裏寫作。

您的第一個字符串拆分問題可以概括爲位置字拆分。如果確保您需要所有均勻位置的字符串,則可以首先根據空間拆分字符串,然後拉出所有偶數位置字符串。

關於AND的第二個問題,或者&或拆分,可以用單個字符串「」替換所有「AND」&「OR」,並且可以用單個空格字符串「」拆分輸出字符串。

在第三個問題上,用單個空格字符串「」替換「IF」&「END」,我不確定最後一個IF是否出現在您的字符串中。如果是這樣,你可以用空字符串「」替換它,然後根據單個空格字符串「」拆分字符串。

首先根據模式對輸入字符串進行分類,並且在使用Java之前請設計一個算法。

我建議你使用StringBuffer或StringBuilder而不是直接使用字符串,因爲與上面的比較時字符串操作的代價很高。