如何顯示字符串(矢量)中包含的單詞數? 兩個單詞之間可能有多個空格。顯示屏位數
例如:輸入: '世界,你好你怎麼樣' 應該返回5.
要計算的向量v空格數,我寫: ñ←+ /vε'
但是,它不會顯示單詞的數量。 有人嗎?
如何顯示字符串(矢量)中包含的單詞數? 兩個單詞之間可能有多個空格。顯示屏位數
例如:輸入: '世界,你好你怎麼樣' 應該返回5.
要計算的向量v空格數,我寫: ñ←+ /vε'
但是,它不會顯示單詞的數量。 有人嗎?
s←'Hello world, how are you?'
a←s∊'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
+/ (a,0)∧~0,a
a
是含有1-S在其中字母發生和位置0-S別處的載體。
s: H e l l o w o r l d , h o w a r e y o u ?
a: 1 1 1 1 1 0 1 1 1 1 1 0 0 1 1 1 0 1 1 1 0 1 1 1 0
一個單詞的每個首字母都對應一個以0開頭的1(或者在一個初始位置)。那麼,如果我們這個序列向右移,否定它,並「和」它的a
原始值,我們可以找出詞首字母:
s: H e l l o w o r l d , h o w a r e y o u ?
a,0: 1 1 1 1 1 0 1 1 1 1 1 0 0 1 1 1 0 1 1 1 0 1 1 1 0 0
~0,a: 1 0 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 1 0 0 0 1 0 0 0 1
(a,0)∧~0,a: 1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0
現在算起的話是一樣簡單總結:+/
您可以在http://ngn.github.io/apl/web/index.html#code=s%u2190%27Hello%20world%2C%20how%20are%20you%3F%27%0Aa%u2190s%u220A%27abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ%27%0A+/%28a%2C0%29%u2227%7E0%2Ca或http://tryapl.org
我的解決辦法是相似的,但訣竅是在判決之前故意添加一個空格,只計算一個字母之前下跌空間嘗試用我的翻譯代碼。這樣,空格的數量等於單詞,並且在執行操作之前,您無需擔心修剪文本。
如果我沒有添加空間(在第二行),我無法知道文本是否有任何前導空格,所以我必須以某種方式檢查該空間。通過有意添加空間,我正在精簡文本,以便我知道我總是處理至少一個領先空間。
計算字數:
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."