2

空白で区切られた 2 つの整数と、それに続く空白を含む任意の文字列を含む文字列があります。

例:

23 14 this is a random string

抽出方法を教えてくださいthis is a random string

整数が 2 桁であるとは限らないため、indexOf と部分文字列を使用してこのデータを抽出する方法がわかりません。

前もって感謝します。

4

7 に答える 7

6

使用split(String regex, int limit):

String s = "23 14 this is a random string";
String[] arr = s.split(" ", 3);
System.out.println(arr[2]);

出力:

これはランダムな文字列です

于 2012-07-13T03:59:19.347 に答える
1

上記の回答regex+を組み合わせて使用​​しreplaceFirstます。

String s = "23 14 this is a random string";
String formattedS = s.replaceFirst("\\d+ \\d+ ", "");

これにより、数値の大きさに関係なく、空白で区切られた最初の 2 つの数値が削除されます。

于 2012-07-13T04:50:13.300 に答える
1
String str = "23 14 this is a random string";
str = str.replaceAll("[0-9]", "");
str = str.trim();
于 2012-07-13T04:00:21.800 に答える
0

ただ使う

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();
}
于 2012-07-13T04:11:48.543 に答える
0

わお。最も単純なことを行うために、一部の人々がどれだけ多くのコードを書くのか信じられません...

以下は、エレガントな 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
于 2012-07-13T04:48:26.657 に答える
0

正直なところ...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
于 2012-07-13T04:12:30.487 に答える
0

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();  
于 2012-07-13T04:01:50.087 に答える