Ruby中带未知标点的字符串拆分

Ruby中带未知标点的字符串拆分,ruby,string,join,split,Ruby,String,Join,Split,我正在构建一个应用程序,它可以下载句子并对其进行解析,以用于文字游戏。我事先不知道文本将包含什么标点符号 我希望能够拆分句子,检查它们的词性标记,如果找到正确的标记,则将其替换为“,然后按顺序重新连接 text = "some string, with punctuation- for example: things I don't know about, that may or may not have whitespaces and random characters % !!"

我正在构建一个应用程序,它可以下载句子并对其进行解析,以用于文字游戏。我事先不知道文本将包含什么标点符号

我希望能够拆分句子,检查它们的词性标记,如果找到正确的标记,则将其替换为
,然后按顺序重新连接

text = "some string, with punctuation- for example: things I don't know about, that may or may not have     whitespaces and random characters % !!"

如何将其拆分为一个数组,以便将解析器传递到每个单词上,并按顺序重新连接它们,记住
string.split(//)
似乎需要知道我要查找的标点符号是什么?

split
在您可以更轻松地描述分隔符而不是要提取的部分时非常有用。在您的情况下,您可以更容易地描述要提取的部分,而不是分隔符,在这种情况下,
scan
更适合。使用
split
是错误的决定。您应该
扫描

text.scan(/[\w']+/)
# => ["some", "string", "with", "punctuation", "for", "example", "things", "I", "don't", "know", "about", "that", "may", "or", "may", "not", "have", "whitespaces", "and", "random", "characters"]
如果要替换匹配项,则更有理由不使用
split
。在这种情况下,您应该使用
gsub

text.gsub(/[\w']+/) do |word|
 if word.is_of_certain_part_of_speech?
   "___"  # Replace it with `"___"`.
 else
   word   # Put back the original word.
 end
end

你为什么要重新加入他们?为什么不直接使用原始字符串呢?或者你正在做某种转换?你能解释一下“词性标记”是什么意思吗?当你在做了任何需要修改的事情后重新组合句子时,你需要保留句子的所有其他内容,包括特定的空格吗?谢谢Andrew和Peter。我想将每个单词发送到词性标记器,根据我要查找的单词类型,将其替换为“\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。我最好如何在原始字符串中保留标点符号和空格,以便将它们重新连接在一起?创建一个字典,将带有尾随标点符号和空格的原始单词映射到新单词列表上(从而仅替换已转换的单词?)