2017-09-06 5 views
-6

スプリット文字列:( - )だから、基本的に私が欲しいものJavaの - 私は、以下の文字列から出力<strong>最初の二</strong>を取得したい複数のダッシュ

first-second-third 

は、最後のダッシュの前に文字列を取得することです。 誰も私にこのための最善の解決策を与えることができますか?

+2

何あなたはこれまでに試してみましたか? – Luke

+1

lastIndefOf( " - ")を取得し、0からこのインデックスに部分文字列を取得するよりもOKです。 –

+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

"簡単に質問ができるので、_Well、多数の投票があります。"実際には、ダウンボートの理由は: "この質問は研究努力を示していません_"。 (ボタンをホバーしてください;)) – AxelH

+0

@IddoEダッシュがないのはどうですか? – 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

はい、あなたは正しいですが、正規表現のオプションを与えました... –

関連する問題