面试题答案
一键面试基本思路
- 对于简单以空格分隔的文本,直接使用字符串的拆分方法,将文本按空格拆分成数组,数组中的每个元素即为一个单词。
- 对于复杂文本(包含标点符号),需要先对文本进行预处理,去除标点符号或者将标点符号与单词分开处理,再进行拆分。
Ruby代码实现(简单词法分析)
text = "This is a simple sentence"
words = text.split(' ')
puts words.inspect
处理复杂文本可能遇到的问题及解决办法
- 问题:标点符号会影响单词的正确拆分,例如 “Hello, world!” 会把 “Hello,” 当作一个单词。
- 解决办法:
- 去除标点符号:可以使用正则表达式去除文本中的标点符号。例如:
text = "Hello, world!"
text.gsub!(/[[:punct:]]/, '')
words = text.split(' ')
puts words.inspect
- **标点符号单独处理**:使用更复杂的正则表达式,在拆分时将标点符号与单词分开。例如:
text = "Hello, world!"
words = text.scan(/\w+|[[:punct:]]/)
puts words.inspect
这样可以把单词和标点符号分别作为数组元素,后续可以根据需求进一步处理。