我定义的猪拉丁语翻译方法有两种:convert_word_to_pig_latin方法是将每个单词转换成隐语,及convert_sentence_to_pig_latin方法是使用convert_word_to_pig_latin方法的句子。
def convert_word_to_pig_latin(word)
vowels = "aeiou"
punctuations = ".,?!'\":;-"
if vowels.include?(word[0])
return word
else
if punctuations.include?(word[-1])
punctuation = word[-1]
word = word.chop
end
first_vowel_index = word.chars.find_index { |letter| vowels.include?(letter) }
new_word = word[first_vowel_index..-1] + word[0...first_vowel_index] + "ay"
return punctuation ? new_word += punctuation : new_word
end
end
def convert_sentence_to_pig_latin(sentence)
sentence_array = sentence.split(" ")
sentence_array.map { |word| convert_word_to_pig_latin(word) }.join(" ")
end
注:请随意添加任何额外的标点符号,只要你愿意。
最后,这里是我的RSpec的,以确保我的两个方法,通过所有的测试:
require_relative('../pig_latin')
describe 'Converting single words to Pig Latin' do
word1 = "beautiful"
word2 = "easy"
word3 = "straight"
it "converts word to Pig Latin" do
expect(convert_word_to_pig_latin(word1)).to eq "eautifulbay"
end
it "does not change word if it begins with a vowel" do
expect(convert_word_to_pig_latin(word2)).to eq "easy"
end
it "converts word to Pig Latin" do
expect(convert_word_to_pig_latin(word3)).to eq "aightstray"
end
end
describe 'Converting a sentence to Pig Latin' do
sentence1 = "Make your life a masterpiece; imagine no limitations on what you can be, have, or do."
sentence2 = "The pessimist sees difficulty in every opportunity. The optimist sees the opportunity in every difficulty."
it "converts motivational quote from Brian Tracy to Pig Latin" do
expect(convert_sentence_to_pig_latin(sentence1)).to eq "akeMay ouryay ifelay a asterpiecemay; imagine onay imitationslay on atwhay ouyay ancay ebay, avehay, or oday."
end
it "converts motivational quote from Winston Churchill to Pig Latin" do
expect(convert_sentence_to_pig_latin(sentence2)).to eq "eThay essimistpay eessay ifficultyday in every opportunity. eThay optimist eessay ethay opportunity in every ifficultyday."
end
end
这主要是你想用来代表解析句子什么样的结构的问题。 –
你是什么意思? – Raph
那么,你的问题在于你有一个通过分割一些较大的字符串获得的单词列表,但这些单词在其中有标点符号。你可以通过删除所有的标点符号来解决这个问题,但是你最终无法得到它。因此,您需要一种方法来表示数据结构中原始字符串的所有信息,这些信息比简单的字符串更易于使用。 –