如何显示字符串(矢量)中包含的单词数? 两个单词之间可能有多个空格。显示屏位数
例如:输入: '世界,你好你怎么样' 应该返回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."