2

我有一个字符串,其中包含 2 个由空格分隔的整数,后跟包含空格的任何字符串。

例子:

23 14 this is a random string

如何提取this is a random string

整数不能保证是两位数,因此我不知道如何使用 indexOf 和 substring 来提取这些数据。

提前致谢。

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
String str = "23 14 this is a random string";
str = str.replaceAll("[0-9]", "");
str = str.trim();
于 2012-07-13T04:00:21.800 回答
1

我会使用上述答案的组合,regex+ replaceFirst

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

无论数字有多大,这都会删除由空格分隔的前两个数字。

于 2012-07-13T04:50:13.300 回答
0

您可以使用 StringTokenizer,如果您知道您将有 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 回答
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

老实说...如果您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

哇。我不敢相信有些人写了多少代码来做最简单的事情......

这是一个优雅的单行解决方案:

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 回答