2017-09-06 67 views
-6

我希望得到一個輸出第一二從下面的字符串:爪哇 - 分割字符串與多個破折號

first-second-third 

所以基本上我想要的是最後的衝刺之前得到的字符串( - ) 。 任何人都可以給我一個最好的解決方案嗎?

+2

什麼你到目前爲止嘗試過嗎? – Luke

+1

獲取lastIndefOf(「 - 」)並從中獲取從0到這個索引的子字符串它不正確? –

+0

閱讀'String.split'的文檔 – Jens

回答

2

好,許多下來票,但我會添加一個解決方案

最有效的方式做到這一點是使用java.lang.String中#lastIndexOf,返回在此字符串中最後一次出現處的索引指定字符,反向搜索

lastIndexOf將返回-1,如果儀表不存在

String str = "first-second-third"; 
int lastIndexOf = str.lastIndexOf('-'); 
System.out.println(lastIndexOf); 
System.out.println(str.substring(0, lastIndexOf)); // 0 represent to cut from the beginning of the string 

輸出:

第一二

+2

「_很好,因爲它是一個簡單的問題而多次下了選票。」實際上,downvote的原因是:「這個問題沒有顯示任何研究努力」。 (懸停按鈕,你會看到;)) – AxelH

+0

@IdodoE如果沒有破折號?它會拋出一個異常 – Makudex

+2

@Makudex你現在問的是如何寫一個if語句...?我認爲這是你應該開始用Java進行冒險的頁面:https://docs.oracle.com/javase/tutorial/java/nutsandbolts/index.html –

0
String s = "first-second-third"; 
String newString = s.substring(0,s.lastIndexOf("-")); 
+0

點採取和回答固定。 –

0

只是一個另一種方式比lastIndex的方法等,使用正則表達式也可以做到,試試下面的代碼:

Pattern p = Pattern.compile("\\s*(.*)-.*"); 
Matcher m = p.matcher("first-second-third"); 
if (m.find()) 
    System.out.println(m.group(1)); 
+0

這與'lastIndexOf'不一樣。例如,如果你在輸入中有一個換行符,它將不起作用。 –

+0

是的,你是對的,我只是給了正則表達式的選項... –