我正在尝试用 Ruby 编写一个函数,它可以接受一个字符串,然后根据某些条件将其拆分。这将用于模拟语法并生成随机句子。字符串按以下格式存在:
<start>
You <adj> <name> ;
May <curse> . ;
然后它将被转换为如下所示的字符串,并将其传递给函数。
\n<start>\nYou <adj> <name> . ;\nMay <curse> . ;\n
使用我的方法分割字符串后,它返回一个如下所示的数组:
["<start>", "You <adj> <name> .", "May <curse> ."]
即使对于空白区域,这也应该有效,例如:
"\n<start>\nYou <adj> <name> . ;\n;\n
被转变成一个数组,其中包含:
["<start>", "You <adj> <name> .", ""]
我将如何实现这一目标?我对如何设置正则表达式以及如何将字符串中的项目提取到数组中有点迷失。
str = "\n<start>\nYou <adj> <name> . ;\nMay <curse> . ;\n"
str.lines # Break on newlines
.map{| l | l.gsub "\n", '' } # remove trailing newlines
.map{| l | l.gsub /\s*;$/, '' } # remove trailing spaces and ;
.reject{| l | l.empty? } # remove empty elements
=> ["<start>", "You <adj> <name> .", "May <curse> ."]