スプリット文字列:( - )だから、基本的に私が欲しいものJavaの - 私は、以下の文字列から出力<strong>最初の二</strong>を取得したい複数のダッシュ
first-second-third
は、最後のダッシュの前に文字列を取得することです。 誰も私にこのための最善の解決策を与えることができますか?
スプリット文字列:( - )だから、基本的に私が欲しいものJavaの - 私は、以下の文字列から出力<strong>最初の二</strong>を取得したい複数のダッシュ
first-second-third
は、最後のダッシュの前に文字列を取得することです。 誰も私にこのための最善の解決策を与えることができますか?
まあ、ダウン多くの票が、私は解決策
それを行うための最も効率的な方法を追加しますが最後に出現する、この文字列内のインデックスを返すの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
出力が存在しない場合は、後方
を検索します
一二
String s = "first-second-third";
String newString = s.substring(0,s.lastIndexOf("-"));
ポイントが取得され、修正されました。 –
はあまりにも行うことができます正規表現を使用してlastIndexの方法以外の別の方法で、コードの下に試してみてください。
Pattern p = Pattern.compile("\\s*(.*)-.*");
Matcher m = p.matcher("first-second-third");
if (m.find())
System.out.println(m.group(1));
これは 'lastIndexOf'と同じ働きをしません。たとえば、入力に改行がある場合、それはうまくいかないでしょう。 –
はい、あなたは正しいですが、正規表現のオプションを与えました... –
何あなたはこれまでに試してみましたか? – Luke
lastIndefOf( " - ")を取得し、0からこのインデックスに部分文字列を取得するよりもOKです。 –
'String.split'の文書を読んでください – Jens