如何提取两个或多个以空格分隔且以大写字母开头的单词并将它们保存为 java 中的单个标记?
问问题
2618 次
5 回答
2
您可以使用以下内容作为起点:
String input = "This is a sentence with two Words with capital letters";
String[] words = input.split(" ");
for(String word : words)
{
if(word.length() > 0 && Character.isUpperCase(word.charAt(0)))
{
System.out.println("Upper case: " + word);
}
else
{
// doesn't have upper case at beginning
}
}
输出将是:
大写:这个
大写:单词
于 2012-08-18T10:50:54.257 回答
1
您可以使用此正则表达式,它将匹配以大写字母开头的任何单词:\b([A-Z]\w*?)\b
。
这个稍作修改的版本将仅匹配序列 > 2: (\b[A-Z]\w*\b(?: (?![^A-Z]))?){2,}
。
我认为只需一点点努力,两个正则表达式都可以变得更小。但这会给你一些起点。
试试看:http ://www.cis.upenn.edu/~matuszek/General/RegexTester/regex-tester.html
于 2012-08-18T10:52:28.377 回答
1
您可以使用此正则表达式在句子中查找多个单词,空格用作拆分字符,您可以添加其他单词。
((?<=\s)[A-Z][\w]*\s)+[A-Z][\w]*(?=\s)
于 2012-08-18T11:01:54.533 回答
0
我希望这能解决你的问题。
1.使用字符串函数
String word = "this is my content ";
String[] splitWord;
String capWord = "";
splitWord = word.split(" ");
for (int i = 0; i < splitWord.length; i++) {
capWord = splitWord[i].substring(0, 1).toUpperCase() + splitWord[i].substring(1) + " ";
System.out.println(capWord);
}
2.使用 WordUtils API
String text="use this text";
String text1="use this TEXT";
String word = WordUtils.capitalize(text);
System.out.println(word);
word = WordUtils.capitalizeFully(text1);
System.out.println(word);
于 2012-08-18T10:56:05.270 回答
0
正则表达式可能是一个不错的选择。
要匹配以大写字母开头的两个或多个单词的任何系列,那么您需要使用Matcher。
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
String passage = "I am at New South Welse at the moment";
Pattern twoOrMoreWordsPattern= Pattern.compile("([A-Z][a-z]+ +){2,}");
Matcher twoOrMoreWordsMatcher = twoOrMoreWordsPattern.matcher(passage);
while (twoOrMoreWordsMatcher.find()){
for(int i = 0; i < twoOrMoreWordsMatcher.groupCount(); i++){
System.out.print(twoOrMoreWordsMatcher.group(i));
}
}
System.out.println("");
}
}
这有望工作并做你想做的事,如果没有,那么它接近你想要的......
于 2012-08-18T11:00:18.530 回答