2014-02-07 212 views
0

我有一個非常複雜的函數輸出,我需要使用它的特定單詞。Java字符串分割多個字符分隔符

對於例如,我輸出是:

oracle 11257  1 0 14:01 ?  00:00:00 ora_pmon_sas 

我需要得到公正 「sas」 字樣,這是旁邊的 「ora_pmon_

又如:

oracle 6187  1 0 13:41 ?  00:00:00 ora_pmon_db2 

我需要得到「db2」。那麼我應該怎麼表達?

Java代碼:

insArray=line.split("what will be between these quotes?"); 
+1

爲什麼如果該模式只發生一次,你分裂了!..它有多個這樣的模式。 。請問你的問題非常具體.. – Anirudha

+0

'input.substring(input.lastIndexOf('ora_pmon_')+ 1)'會做詭計...... –

+0

好吧,可能會有另一個詞,如「asm_pmon_」而不是「 ora_pmon_」。但其餘的事情是相似的。 – AloneInTheDark

回答

2

你可以只是做

String sub = s.substring(s.indexOf("ora_pmon_") + 9); 
1

您可以簡單地使用String#substring(int i)String#lastIndexOf(char ch)

合併例如:

String result = input.substring(input.lastIndexOf('_') + 1) 
+0

'ora_pmon_db2_abc'怎麼辦?根據OP問題,我認爲更好的sol可能是'lastIndexOf('ora_pmon _')'... –

+0

你是對的,但是OP沒有注意到會有這種情況。 –

2

這個怎麼樣?

string = string.replaceAll(".*?ora_pmon_", ""); 

如果你想代替ORA多個單詞,那麼這將是

string = string.replaceAll(".*?(ora|kf|asm)_pmon_", ""); 
+0

這可能是有用的,但「ora」可以是任何像「kf」或「asm」。那麼你對這種情況的答案是什麼? – AloneInTheDark

+0

用'(ora | kf | asm)替換ora'只需在其中添加你的單詞和管道。 –

+0

但我只需要找到它們。如果沒有像「ora_pmon_sas」這樣的詞,它應該通過它。 – AloneInTheDark