-3

大文字で始まる空白で区切られた2つ以上の単語を抽出し、Javaで単一のトークンとして保存するにはどうすればよいですか?

4

5 に答える 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.WordUtilsAPIの使用

   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

正規表現は良い賭けかもしれません。

大文字で始まる一連の 2 つ以上の単語に一致させるには、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 に答える