2014-02-06 83 views
-1

的特定詞對於Java程序中,我需要寫,我用的是可以包含任意順序編號的下列詞語串提供:chardoubleint解析出字符串

所以它可能像任何一個:

  1. "charintdouble"
  2. "charchar"
  3. "intdoublechardouble"

然後,我想按照它們出現在字符串中的順序將每個單詞存儲在數組中。所以"intdoublechardouble"輸入字符串會導致一個數組,看起來像這樣:

{"int", "double", "char", "double"} 

什麼是解析字符串得到所有的講出了它的最佳方式?

+0

爲什麼不與_worst way_開始,然後讓人家把你期待的_best_? – devnull

+0

這不是它工作的方式。您首先嚐試找到解決方案,然後當某些事情不起作用時,您會問一個具體問題。發佈「這是我的問題,請告訴我如何去做」在StackOverflow上被認爲是無關緊要的。 –

+0

我不要求任何人爲我編寫代碼我只是想知道人們認爲是最有效和最簡單的方法。顯然,最糟糕的方式是循環查看字符串中的每個字符,並查看當前序列是否與我正在查找的任何單詞匹配。感謝您提出合理問題的提議? – arazzy

回答

0

您可以使用替代和字符串的分割方法

String str="intdoublechardouble"; 
    str=str.replace("char", "char-").replace("double", "double-").replace("int", "int-"); 
    String[] tokens=str.split("-"); 

現在令牌包含[int, double, char, double]

+0

我結束了使用這種方法。非常感謝! – arazzy

0

我會先考慮如何在現實生活中做到這一點,並嘗試將其轉換爲Java算法。對於字符串數組{"char", "int", "double"}中的每個元素的字符串,string.split的效率會低一些,並將string.split創建的所有令牌按正確的順序排列。

0

如果你需要爲這個特定問題的有效解決方案,這應該做的伎倆

public Object extractWords(String s) { 

    ArrayList<String> array = new ArrayList<String>(); 

    s = s.replace("t", "t,"); 
    s = s.replace("r", "r,"); 
    s = s.replace("e", "e,"); 

    StringTokenizer tokenizer = new StringTokenizer(s, ","); 
    while (tokenizer.hasMoreTokens()) { 
     array.add(tokenizer.nextToken()); 
    } 
    return array; 
} 

顯然,這不是一般的工作。對於其他情況,我猜你必須按照你的建議通過char來遍歷輸入字符串char,並將它與目標單詞列表進行比較。