空白で区切られた 2 つの整数と、それに続く空白を含む任意の文字列を含む文字列があります。
例:
23 14 this is a random string
抽出方法を教えてくださいthis is a random string
。
整数が 2 桁であるとは限らないため、indexOf と部分文字列を使用してこのデータを抽出する方法がわかりません。
前もって感謝します。
空白で区切られた 2 つの整数と、それに続く空白を含む任意の文字列を含む文字列があります。
例:
23 14 this is a random string
抽出方法を教えてくださいthis is a random string
。
整数が 2 桁であるとは限らないため、indexOf と部分文字列を使用してこのデータを抽出する方法がわかりません。
前もって感謝します。
使用split(String regex, int limit)
:
String s = "23 14 this is a random string";
String[] arr = s.split(" ", 3);
System.out.println(arr[2]);
出力:
これはランダムな文字列です
上記の回答regex
+を組み合わせて使用しreplaceFirst
ます。
String s = "23 14 this is a random string";
String formattedS = s.replaceFirst("\\d+ \\d+ ", "");
これにより、数値の大きさに関係なく、空白で区切られた最初の 2 つの数値が削除されます。
String str = "23 14 this is a random string";
str = str.replaceAll("[0-9]", "");
str = str.trim();
ただ使う
StringTokenizer st=new StringTokenizer(youString, " "); //whitespaces as delimeter
int firstInteger=Integer.parseInt(st.nextToken());
int secondInteger=Integer.parseInt(st.nextToken());
同様に残りのトークン..
あなたは明確な配列を作ることができます..
残りのトークンをこのような文字列配列に格納します..
while(st.hasMoreTokens())
{
ar[i]=st.nextToken();
}
わお。最も単純なことを行うために、一部の人々がどれだけ多くのコードを書くのか信じられません...
以下は、エレガントな 1 行のソリューションです。
String remains = input.replaceAll("^(\\d+\\s*){2}","");
ここにテストがあります:
public static void main( String[] args ) {
// rest of String contains more numbers as an edge case
String input = "23 14 this is a random 45 67 string";
String remains = input.replaceAll("^(\\d+\\s*){2}","");
System.out.println( remains );
}
出力:
this is a random 45 67 string
正直なところ...String
パターンに従っていて、そこから何かを抽出する必要がある場合は、 を使用してみてくださいRegex
。このために作られています。
Pattern regex = Pattern.compile("^\\d+ \\d+ (.*)$");
Matcher matcher = regex.matcher("23 14 this is a random string");
if (matcher.find())
System.out.println(matcher.group(1));
その出力:
this is a random string
StringTokenizer を使用できます。2 つの数値があることがわかっている場合は、配列の最初の 2 つの要素を無視してください。
StringBuffer sb = new StringBuffer();
StringTokenizer st = new StringTokenizer("23 14 this is a random string");
int i = 1; // counter: we will ignore 1 and 2 and only append
while (st.hasMoreTokens()) {
// ignore first two tokens
if (i > 2) {
sb.append(st.nextToken()); // adds remaining strings to Buffer
}
i++; // increment counter
} // end while
// output content
sb.toString();