-5

私はこれを試すためにこのコードを使用しました:

String st="Hello world have a nice day";
String arr=st.Split(" ");
for (int i=0; i < arr.length; i++) {
    ???
}

しかし、それは機能しません。

次のような出力が必要です。

Hello=5
World=5
have=4
a=1
nice=4
day=3

誰かが正しいコードを知っていますか?

4

3 に答える 3

4

次のようなものを使用できます。

String[] words = yourString.split(" ");

for (String word : words) {
  System.out.println(word + " length is: " + word.length());
}
于 2013-03-10T01:07:07.807 に答える
1

word.length()文字列の長さを返します。

ただし、split()メソッドは文字列をスペースで分割するだけで、結果の分割にすべてが残ります。すべてとは、句読点、タブレータ、改行文字などを意味し、それらすべてが長さにカウントされます。したがって、単に実行する代わりに、次のword.length()ようなことをしたいかもしれません:

word.replaceAll("\p{Punct}", "").trim().length().

  • replaceAll("\p{Punct}", "")String からすべての句読点を削除します。

  • trim()先頭と末尾の空白をすべて削除します。

たとえば、次のような文です。

ウィル・オ・ザ・ウィスプを見ました。\n

(\nたとえば、ファイルから文字列を読み取った場合に得られる行末文字を意味します)。

文は次のように分割されます。

"I"  
"saw"  
"a"  
"will-o'-the-wisp.\n"

最後の文字列

ウィスプの意志。\n

は 18 文字ありますが、単語の文字数を超えています。メソッドの後replaceAll()、文字列は次のようになります。

ウィロザウィスプ\n

メソッドの後trim()、文字列は次のようになります。

ウィロザウィスプ

これは長さ 12 で、単語の長さです。

于 2013-03-10T01:19:18.547 に答える
0

拡張されたforループを使用して、単語とその長さを出力します。

foreach(String w : st.split()) {
    System.out.println(w + ": " + w.length());
}
于 2013-03-10T01:11:23.593 に答える