3 つの部分から構成される文字列があります。文字列にしたい単語(変化)、区切り部分(変化なし)、そして変化する最後の部分。区切り部分と終わり部分を削除したい。区切り部分は「 - 」なので、文字列の特定の部分の後にすべてを削除する方法があるかどうか疑問に思っています。
このシナリオの例は、「スタック オーバーフロー - 質問する場所」を「スタック オーバーフロー」に変更したい場合です。どんな助けでも大歓迎です!
たとえば、次のことができます。
String result = input.split("-")[0];
また
String result = input.substring(0, input.indexOf("-"));
(そして、関連するエラー処理を追加します)
Apache commons StringUtils はsubstringBeforeメソッドを提供します
StringUtils.substringBefore("Stack Overflow - A place to ask stuff", " - ")
これを使用できます
String mysourcestring = "developer is - development";
String substring = mysourcestring.substring(0,mysourcestring.indexOf("-"));
「開発者は-」と書かれます
おそらくそれがあなたが探しているものです:
String str="Stack Overflow - A place to ask stuff";
String newStr = str.substring(0, str.indexOf("-"));
すべてのアプローチのサンプル プログラムを作成しまし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;
これはあなたが必要とすることをします:
newValue = oldValue.substring(0, oldValue.indexOf("-");