52

3 つの部分から構成される文字列があります。文字列にしたい単語(変化)、区切り部分(変化なし)、そして変化する最後の部分。区切り部分と終わり部分を削除したい。区切り部分は「 - 」なので、文字列の特定の部分の後にすべてを削除する方法があるかどうか疑問に思っています。

このシナリオの例は、「スタック オーバーフロー - 質問する場所」を「スタック オーバーフロー」に変更したい場合です。どんな助けでも大歓迎です!

4

10 に答える 10

87

たとえば、次のことができます。

String result = input.split("-")[0];

また

String result = input.substring(0, input.indexOf("-"));

(そして、関連するエラー処理を追加します)

于 2012-09-05T08:38:03.807 に答える
30

Apache commons StringUtils はsubstringBeforeメソッドを提供します

StringUtils.substringBefore("Stack Overflow - A place to ask stuff", " - ")

于 2012-09-05T09:27:24.163 に答える
4

これを使用できます

String mysourcestring = "developer is - development";
String substring = mysourcestring.substring(0,mysourcestring.indexOf("-"));

「開発者は-」と書かれます

于 2012-09-05T08:39:42.927 に答える
1

おそらくそれがあなたが探しているものです:

String str="Stack Overflow - A place to ask stuff";

String newStr = str.substring(0, str.indexOf("-"));
于 2012-09-05T08:39:06.373 に答える
1

すべてのアプローチのサンプル プログラムを作成しましSubStringたが、最速のようです。

Using builder : 54
Using Split : 252
Using Substring  : 10

以下はサンプルプログラムコードです

            for (int count = 0; count < 1000; count++) {
        // For JIT
    }
    long start = System.nanoTime();
    //Builder
    StringBuilder builder = new StringBuilder(
            "Stack Overflow - A place to ask stuff");
    builder.delete(builder.indexOf("-"), builder.length());
    System.out.println("Using builder : " + (System.nanoTime() - start)
            / 1000);
    start = System.nanoTime();
    //Split
    String string = "Stack Overflow - A place to ask stuff";
    string.split("-");
    System.out.println("Using Split : " + (System.nanoTime() - start)
            / 1000);
    //SubString
    start = System.nanoTime();
    String string1 = "Stack Overflow - A place to ask stuff";
    string1.substring(0, string1.indexOf("-"));
    System.out.println("Using Substring : " + (System.nanoTime() - start)
            / 1000);
    return null;
于 2012-09-05T08:49:22.127 に答える
0

これはあなたが必要とすることをします:

newValue = oldValue.substring(0, oldValue.indexOf("-");
于 2012-09-05T08:39:22.850 に答える