尝试制作一个函数,该函数以字符串作为输入并返回整个字符串中单词的数量

**它的输入是一个字符串,如'Nice one' 其输出为- 4,3(即句子或字符串中的单词数)**

function countx(str)
   local count = {}
   for i = 1, string.len(str) do
       s = ''
       while (i<=string.len(str) and string.sub(str, i, i) ~= ' ' ) do
           s = s .. string.sub(str, i, i)
           i = i+1
       end
       if (string.len(s)>0) then
           table.insert(count,string.len(s))
       end
   end
   return table.concat(count, ',')
end
点赞
用户8342999
用户8342999

以下函数返回一个包含每个单词中字符数的列表。

s=s.split(" ") 使用分隔符“”(空格)拆分字符串 s=map(len,s) 将单词映射为整数的单词长度 s=map(str,s) 将值映射为字符串 s=list(s)map对象转换为list

以上函数的简短版本(全部在一行中)

def countLenWords(s):
   return list(map(str,map(len,s.split(" "))))
2020-10-10 13:38:34
用户10953006
用户10953006

你可以使用以下代码实现新的要求:

function CountWordLength (String)
  local Results  = { }
  local Continue = true
  local Position = 1
  local SpacePosition

  while Continue do
    SpacePosition = string.find(String, " ", Position)
    if SpacePosition then
      Results[#Results + 1] = SpacePosition - Position
      Position = SpacePosition + 1
      -- 如果需要打印字符串
      -- local SubString = String:sub(Position, SpacePosition)
      -- print(SubString)
    else
      Continue = false
    end
  end

  Results[#Results + 1] = #String - Position + 1

  return Results
end

Results = CountWordLength('我是一个男孩')

for Index, Value in ipairs(Results) do
  print(Value)
end

输出的结果如下:

1
2
1
3
2020-10-10 13:40:07
用户6632736
用户6632736
-- 为了效率本地化。
local insert = table.insert

local text = '我是个贫穷的男孩。我不需要同情。'

local function word_lengths (text)
    local lengths = {}
    for word in text:gmatch '[%l%u]+' do
        insert (lengths, word:len())
    end
    return lengths
end

print ('{' .. table.concat (word_lengths (text), ', ') .. '}')
  • gmatch 返回在字符串中用于匹配模式的迭代器。

  • [%l%u]+ 是 Lua 正则表达式(请参见 http://lua-users.org/wiki/PatternsTutorial),匹配至少一个小写或大写字母:

    • [] 是一个_字符类_:一个字符集。它匹配括号内的任何内容,例如 [ab] 将匹配 ab
    • %l 是任何小写的拉丁字母,
    • %u 是任何大写的拉丁字母,
    • + 表示重复一次或多次。

因此,text:gmatch '[%l%u]+' 将返回一个迭代器,该迭代器将逐个生成由拉丁字母组成的单词,直到 text 结束。此迭代器在通用 for(请参见 https://www.lua.org/pil/4.3.5.html)中使用;在任何迭代中,word 都将包含正则表达式的完整匹配。

2020-10-10 14:25:48