最も効率的ではないかもしれませんが、正規表現とreplaceFirstを使用できます
for (int i = 0; i < arr.length; i++)
{
arr[i] = arr[i].replaceFirst("( |\\+).*$","");
}
' '
基本的に、スペースまたはプラス記号の最初のインスタンスを見つけます。これは、正規表現の特殊記号でもあるため+
、2 でエスケープする必要があり、最後まで続く他の文字と一緒に、空に置き換えます。ストリング。\
+
.*
$
Maybe のように他の区切り文字をキャッチするためにコードを拡張する必要がある場合は、別の演算子.
を使用してグループに区切り文字を追加するだけです。|
arr[i] = arr[i].replaceFirst("( |\\+|\\.).*$","");
これにより、ループごとに新しい正規表現パターンがコンパイルされます。これは、配列に多くの文字列がある場合には理想的ではありません。その場合、最初にループの外で別のパターンをコンパイルすることを検討してください。
Pattern pattern = Pattern.compile("( |\\+).*$");
for (int i = 0; i < arr.length; i++)
{
arr[i] = pattern.matcher(arr[i]).replaceFirst("");
}
後でパーツが必要な場合は、次のような正規表現を使用します。
for (int i = 0; i < arr.length; i++)
{
arr[i] = arr[i].replaceFirst("^.*( |\\+)\\s*","");
}
「5000+」に対して「5000」をキャプチャしたい場合は、これを変更する必要があることに注意してください。
次のように、"\d+" を使用して数字を検索する一般的な正規表現を別途作成することをお勧めします。
^(\\d+).*((\\d+)?)$
次に、Matcher とMatcher.groupを使用して特定の番号を選択するだけです。
関連リンク:
文字列のドキュメント
パターンのドキュメント
マッチャーのドキュメント
Java の正規表現
正規表現に関するウィキペディア