文字列(ベクトル)に含まれる単語数を表示するにはどうすればよいですか? 2 つの単語の間に複数のスペースが存在する場合があります。
例: 入力: ' Hello World, How are you ' は 5 を返す必要があります。
ベクトル v 内のスペースの数をカウントするには、次のように記述します: n←+/v∊' '
ただし、単語数は表示されません。誰?
文字列(ベクトル)に含まれる単語数を表示するにはどうすればよいですか? 2 つの単語の間に複数のスペースが存在する場合があります。
例: 入力: ' Hello World, How are you ' は 5 を返す必要があります。
ベクトル v 内のスペースの数をカウントするには、次のように記述します: n←+/v∊' '
ただし、単語数は表示されません。誰?
私の解決策も同様ですが、意図的に文の前にスペースを追加し、文字の前にあるスペースのみをカウントするのがコツです。このように、スペースの数は単語と同じであり、操作を実行する前にテキストをトリミングすることを心配する必要はありません。
(2 行目に) スペースを追加していなければ、テキストの先頭にスペースがあるかどうかを知る方法がないため、何らかの方法でそれを確認する必要があります。意図的にスペースを追加することで、テキストを合理化して、常に少なくとも 1 つの先行スペースを扱っていることがわかるようにしています。
単語を数える:
P←"My cat doesn't like fishy tasting food. "
L←' '⍷' ',P
+/L∧~1⌽L
出力:
7
不要なスペースを取り除く:
関連するテーマでは、 の値をL
使用して、テキストの前後のスペースをトリミングし、余分なスペースを削除することもできます。
1↓(L⍲1⌽L)/' ',P
出力:
"My cat doesn't like fishy tasting food."
先頭と末尾のスペースを削除します。
余分なスペースを削除せずにテキストの最初と最後をトリミングする場合:
((∧\L)⍱⌽∧\⌽L)/' ',P
ただし、この最後のものでは、先頭にスペースを追加する必要はありません。L
したがって、他の理由で計算する必要がない場合は、次の方法を使用できL2
ます。
L2←" "⍷P
((∧\L2)⍱⌽∧\⌽L2)/P
出力 (最初と同じですが、最後の余分なスペースはなくなりました):
"My cat doesn't like fishy tasting food."