修剪字符串以获得java中的第二个单词、第三个单词和第四个单词?

修剪字符串以获得java中的第二个单词、第三个单词和第四个单词?,java,regex,string,Java,Regex,String,我有两条线 一是 String s1=“我有1000美元” 二是 String s2=“我想要我的宠物” 我只需要在s1中获得“have”、“1000”、“dollars”。 同样,我只需要在s2中获得“想要”、“我的”和“宠物” 我知道如何使用代码获取“I” 字符串newS1=s.substring(0,s.indexOf(“”) 有没有一种方法可以通过使用子字符串来实现这一点?您可以尝试下面的rgex来获得第二、第三、第四个单词 ^\\S+\\s*(\\S+)\\s*(\\S+)\\s*(\

我有两条线

一是

String s1=“我有1000美元”

二是

String s2=“我想要我的宠物”

我只需要在s1中获得“have”、“1000”、“dollars”。 同样,我只需要在s2中获得“想要”、“我的”和“宠物”

我知道如何使用代码获取“I”

字符串newS1=s.substring(0,s.indexOf(“”)


有没有一种方法可以通过使用子字符串来实现这一点?

您可以尝试下面的rgex来获得第二、第三、第四个单词

^\\S+\\s*(\\S+)\\s*(\\S+)\\s*(\\S+).*$

组索引1包含第一个单词,索引2包含第二个单词,索引3包含第三个单词

Pattern regex = Pattern.compile("^\\S+\\s*(\\S+)\\s*(\\S+)\\s*(\\S+).*$");
 Matcher matcher = regex.matcher("I have 1000 dollars");
 while(matcher.find()){
        System.out.println(matcher.group(1));
        System.out.println(matcher.group(2));
        System.out.println(matcher.group(3));

}
输出:

have
1000
dollars

您可以尝试下面的rgex来获取第二、第三、第四个单词

^\\S+\\s*(\\S+)\\s*(\\S+)\\s*(\\S+).*$

组索引1包含第一个单词,索引2包含第二个单词,索引3包含第三个单词

Pattern regex = Pattern.compile("^\\S+\\s*(\\S+)\\s*(\\S+)\\s*(\\S+).*$");
 Matcher matcher = regex.matcher("I have 1000 dollars");
 while(matcher.find()){
        System.out.println(matcher.group(1));
        System.out.println(matcher.group(2));
        System.out.println(matcher.group(3));

}
输出:

have
1000
dollars

如果您总是想在任何字符串中使用第二个、第三个和第四个单词,我建议您使用拆分函数

代码:

输出:

second word is have
third word is 1000
fourth word is dollars

如果您总是想在任何字符串中使用第二个、第三个和第四个单词,我建议您使用拆分函数

代码:

输出:

second word is have
third word is 1000
fourth word is dollars


@你真的需要使用子字符串吗?因为使用子字符串并不总是有效。使用子字符串会更好,因为我看到了关于人们使用模式、.replaceAll()之类的线程。
String newS1=s.substring(s.indexOf(“”),s.lastIndexOf(“”)不按你说的做@你的所有字符串都需要第二个和第三个单词吗?是的,我需要第二个、第三个和第四个words@fooore你真的需要使用子字符串吗?因为使用子字符串并不总是有效。使用子字符串会更好,因为我看到了关于人们使用模式、.replaceAll()之类的线程。
String newS1=s.substring(s.indexOf(“”),s.lastIndexOf(“”)不按你说的做@foooree您的所有字符串中是否需要第二个和第三个单词?是的,我需要第二个、第三个和第四个单词她需要第二个和第三个单词这将返回除第一个单词以外的所有单词-一旦s.contains()上的引号被更正-它不支持输入字符。另外,trim()也不是必需的-将
s.indexOf(“”)
更改为
s.indexOf(“”)+1
以删除第一个单词后的空格,但保留其余的前导空格和尾随空格。这很好。我可以用这个。如果我可以删除第一个单词,那么我就可以使用单词RemovedFirstSpace并再次使用它。它甚至不会运行?!!!!!!线程“main”java.lang.RuntimeException中的异常:不可编译的源代码-错误的符号类型:java.lang.String.contains这是对我有效的字符串removeFirstSpace=s.contains(“”)?s、 子字符串(s.indexOf(“”).trim():“”;他需要第二个和第三个单词。这将返回除第一个单词以外的所有单词-一旦s.contains()上的引号被更正-它不支持输入字符。另外,trim()也不是必需的-将
s.indexOf(“”)
更改为
s.indexOf(“”)+1
以删除第一个单词后的空格,但保留其余的前导空格和尾随空格。这很好。我可以用这个。如果我可以删除第一个单词,那么我就可以使用单词RemovedFirstSpace并再次使用它。它甚至不会运行?!!!!!!线程“main”java.lang.RuntimeException中的异常:不可编译的源代码-错误的符号类型:java.lang.String.contains这是对我有效的字符串removeFirstSpace=s.contains(“”)?s、 子字符串(s.indexOf(“”).trim():“”;