假设我有一个字符串,其中包含各种未知长度的单词。我计划使用正则表达式拆分字符串。类似的东西:
String resString = origString.split(".*//s.*//s")[0];
获得前两个单词的正则表达式是什么?我在考虑.*//s.*//s
,所有字符,后跟一个空格,然后是所有字符,然后是另一个空格。但使用它给了我以前完全相同的字符串。我是以错误的方式解决这个问题吗?
任何帮助将不胜感激!
答案 0 :(得分:12)
如果单词之间只有空格,请按\\s+
分隔。拆分时,数组本身就是单词。如果你这样做,前两个将在arr[0]
和arr[1]
:
String[] arr = origString.split("\\s+");
答案 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;
}
如果你想要前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();
}
如果你只想要第一个和第二个词。
答案 2 :(得分:4)
如果要将其拆分为空格字符:
String[] parts = args[i].split(" ");
如果要将其拆分为任何空白字符(空格,制表符,换行符,cr):
String[] parts = args[i].split("\\s");
将多个相邻空格视为一个分隔符:
String[] parts = args[i].split(" +");
空格相同:
String[] parts = args[i].split("\\s+");
前两个字是parts[0]
和parts[1]
答案 3 :(得分:2)
假设您的“单词”由字母数字字符组成,则以下正则表达式将匹配前两个单词:
\w+\s+\w+
答案 4 :(得分:0)
使用以下方法。
public static String firstLettersOfWord(String word) {
StringBuilder result = new StringBuilder();
String[] myName = word.split("\\s+");
for (String s : myName) {
result.append(s.charAt(0));
}
return result.toString();
}}