假设我有一个字符串,其中包含各种未知长度的单词.我计划使用正则表达式拆分字符串.就像是:
String resString = origString.split(".*//s.*//s")[0];
Run Code Online (Sandbox Code Playgroud)
获得前两个单词的正则表达式是什么?我在想.*//s.*//s,所有的角色,然后是空格,然后是所有角色,接着是另一个空格.但使用它给了我以前完全相同的字符串.我是以错误的方式来做这件事的吗?
任何帮助,将不胜感激!
icy*_*com 12
如果单词之间只有空格,则拆分\\s+.拆分时,数组本身就是单词.前两个将进入arr[0],arr[1]如果你这样做:
String[] arr = origString.split("\\s+");
Run Code Online (Sandbox Code Playgroud)
小智 5
如果您想将其精确地拆分为空格字符:
String[] parts = args[i].split(" ");
Run Code Online (Sandbox Code Playgroud)
如果您想将其拆分为任何空白字符(空格、制表符、换行符、cr):
String[] parts = args[i].split("\\s");
Run Code Online (Sandbox Code Playgroud)
要将多个相邻空格视为一个分隔符:
String[] parts = args[i].split(" +");
Run Code Online (Sandbox Code Playgroud)
对于空白也同样:
String[] parts = args[i].split("\\s+");
Run Code Online (Sandbox Code Playgroud)
前两个词是parts[0]andparts[1]
小智 5
使用正则表达式,您可以执行以下操作:
public static ArrayList<String> split2(String line, int n){
line+=" ";
Pattern pattern = Pattern.compile("\\w*\\s");
Matcher matcher = pattern.matcher(line);
ArrayList<String> list = new ArrayList<String>();
int i = 0;
while (matcher.find()){
if(i!=n)
list.add(matcher.group());
else
break;
i++;
}
return list;
}
Run Code Online (Sandbox Code Playgroud)
如果你想要前n个单词,或者只是这个:
public static String split3(String line){
line+=" ";
Pattern pattern = Pattern.compile("\\w*\\s\\w*\\s");
Matcher matcher = pattern.matcher(line);
matcher.find();
return matcher.group();
}
Run Code Online (Sandbox Code Playgroud)
如果你只想要第一个和第二个词.