用户指南第6.1.5章 Word Chunk 单词是由空格,制表符或返回字符分隔的字符串或用双引号括起来的字符串。是否可以使用其他单词分隔符?
我有以下代码片段取自用户指南第6.5.1节“何时使用数组”,p。 184
on mouseUp
--cycle through each word adding each instance to an array
repeat for each word tWord in field "sample text"
add 1 to tWordCount[tWord]
end repeat
-- combine the array into text
combine tWordCount using return and comma
answer tWordCount
end mouseUp
它计算“示例文本”字段中每个单词形式的出现次数。
我意识到,在使用默认设置将单词计算为单词的一部分后,完全停止。
如何更改句号(和/或逗号)被视为字边界的设置?
答案 0 :(得分:1)
或者,您可以在处理之前删除有问题的字符。 这可以使用REPLACE函数或“REPLACETEXT函数”完成。 REPLACETEXT函数可以使用正则表达式匹配字符串,但比REPLACE函数慢。所以我在这里使用REPLACE函数。
on mouseUp
put field "sample" into twords
--remove all trailing puncuation and quotes
replace "." with "" in twords
replace "," with "" in twords
replace "?" with "" in twords
replace ";" with "" in twords
replace ":" with "" in twords
replace quote with "" in twords
--hyphenated words need to be seperated?
replace "-" with " " in twords
repeat for each word tword in twords
add 1 to twordcount[tword]
end repeat
combine twordcount using return and comma
answer twordcount
end mouseUp
答案 1 :(得分:1)
我想你在问一个关于分隔符的问题。一些分隔符是内置的:
单词的空格,
项目的逗号,
返回(CR)行。
创建自己的自定义分隔符属性(itemDelimiter)的功能是该语言的强大功能,属于“项目”。您可以将其设置为任何单个字符:
将itemDelimiter设置为“C”
回答“XXCXXCXX”中的项目数 - 请输入此字符串“theText”
结果将是“3”
正如其他人所指出的那样,将一个字符串替换为另一个字符串的方法允许对自定义文本解析进行强大的控制:
将“C”替换为文本
中的空格产生“XX XX XX”
克雷格纽曼答案 2 :(得分:0)
正如用户指南在第6.1.5章中所述 Word Chunk 一个单词是由空格,制表符或返回字符分隔的字符串或用双引号括起来。
有itemDelimiter
但不是wordDelimiter
。
因此,在将单词添加到单词计数数组之前,首先要删除标点符号。
这可以使用函数effectiveWord
完成。
function effectiveWord aWord
put last char of aWord into it
if it is "." then delete last char of aWord
if it is "," then delete last char of aWord
if it is ":" then delete last char of aWord
if it is ";" then delete last char of aWord
return aWord
end effectiveWord
on mouseUp
--cycle through each word adding each instance to an array
repeat for each word tWord in field "Sample text"
add 1 to tWordCount[effectiveWord(tWord)]
end repeat
-- combine the array into text
combine tWordCount using return and comma
answer tWordCount
end mouseUp