2

我正在构建一个下载句子并解析它们以进行文字游戏的应用程序。我事先不知道文本将包含哪些标点符号。

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

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(//)似乎需要知道我在寻找什么标点符号?

4

1 回答 1

6

split当您可以比要提取的部分更容易地描述分隔符时,它很有用。在您的情况下,您可以更轻松地描述要提取的部分而不是分隔符,在这种情况下scan更适合。使用split. 你应该你scan

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
于 2013-08-03T17:23:40.430 回答