我有一个字符串,其中包含 2 个由空格分隔的整数,后跟包含空格的任何字符串。
例子:
23 14 this is a random string
如何提取this is a random string
?
整数不能保证是两位数,因此我不知道如何使用 indexOf 和 substring 来提取这些数据。
提前致谢。
我有一个字符串,其中包含 2 个由空格分隔的整数,后跟包含空格的任何字符串。
例子:
23 14 this is a random string
如何提取this is a random string
?
整数不能保证是两位数,因此我不知道如何使用 indexOf 和 substring 来提取这些数据。
提前致谢。
使用split(String regex, int limit)
:
String s = "23 14 this is a random string";
String[] arr = s.split(" ", 3);
System.out.println(arr[2]);
输出:
这是一个随机字符串
String str = "23 14 this is a random string";
str = str.replaceAll("[0-9]", "");
str = str.trim();
我会使用上述答案的组合,regex
+ replaceFirst
。
String s = "23 14 this is a random string";
String formattedS = s.replaceFirst("\\d+ \\d+ ", "");
无论数字有多大,这都会删除由空格分隔的前两个数字。
您可以使用 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();
只需使用
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();
}
老实说...如果您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
哇。我不敢相信有些人写了多少代码来做最简单的事情......
这是一个优雅的单行解决方案:
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