0

ここの初心者。あいまいなタイトルで申し訳ありませんが、コードは私の質問を見通しに入れる必要があります。

public static void main(String [] args)
{
    String sentence = "hi. how are you! i'm just dandy.";
    String tokenSent;

    tokenSent = sentenceCapitalizer(sentence);

    System.out.println(tokenSent);
}

public static String sentenceCapitalizer(String theSentence)
{
    StringTokenizer strTokenizer = new StringTokenizer(theSentence, ".!", true);

    String token = null;
    String totalToken = "";
    String ch = "";

    while(strTokenizer.hasMoreTokens())
    {
        token = strTokenizer.nextToken().trim();

        token = token.replace(token.charAt(0), Character.toUpperCase(token.charAt(0)));

        StringBuilder str = new StringBuilder(token);
        str.append(" ");

        totalToken += str;

    }

    return totalToken; 
}

現状のままの出力:こんにちは。大丈夫 !私はただのダンディです。

各文の最初の文字を大文字にすることはできましたが、出力を元の文字列と同じ形式に保ちたいと思っています。問題は、句読点の終わりの前後にスペースを入れることです。StringBuilderやStringTokenizerのみを使用してこの問題を修正する方法はありますか?お時間をいただきありがとうございます。

4

2 に答える 2

0

あなたはこれを行うことができます。

String delim = ".!";
StringTokenizer strTokenizer = new StringTokenizer(theSentence, delim, true);

それで、

if(delim.contains(token))
    str.append(" ");
于 2013-02-08T22:07:24.197 に答える
0

を宣言するnew StringTokenizer(theSentence, ".!", true)と、true次のトークンとしても区切り文字を返せるようになります。各トークンにスペースを追加するため、その出力が得られるのは正常です。

トークンが区切り文字かどうかを確認できます。そうであれば、スペースを追加します。

if(token.length() == 1 &&
   delims.indexOf(token.charAt(0)) != -1)
 str.append(" "); //we just hit the delim char, add space
于 2013-02-08T22:01:03.567 に答える