2011-10-25 61 views
1

如何將「a」或「an」添加到隨機生成的字符串中?將「a」或「an」添加到隨機生成的字符串中

隨機生成器是post[rand(post.length)]

當帖子以元音或輔音開頭時,如何自動爲上述結果添加'a'或'an'?

+3

檢查,看它是否開始與/ [aeiou]同時/並將「n」粘貼到默認的「a」前綴?你試過什麼了? –

+0

笏我做的是隨機產生一個'後'和陣列,DIS正常工作。 –

+0

另一部分是在帖子中添加「a」或「an」,如果發佈的帖子是隨機開始的,使用輔音或元音 –

回答

2

有趣。 在我看來,這裏的算法必須看看'a'或'an'後面單詞開頭的語音發音。只看輔音和元音是不夠的。例如,這裏有一些明顯的選擇和一些例外情況考慮:

一次性的東西
措施
重概念的單位
評價很高
蛋擊敗
一個歷史性的時刻
一個誠實的人
的事情
以眼還眼

我想答案的OP將resul所有者t回答:「是否有描述單詞語音發音的算法?」如果按照這個詞以元音開頭聲音,然後用「的」否則,使用「一」

我不知道這是否會幫助:http://creativyst.com/Doc/Articles/SoundEx1/SoundEx1.htm

0

我明白時後開始以元音或輔音爲:_IF它以字母開頭(無數字或特殊符號)。

這應該修改字符串:

(randomstring << 'a') if randomstring =~ /\A\w/i 

還是有一點testexample:

%w{ 
    ebbbbb 
    debbbbb 
    .debbbbb 
}.each{|randomstring| 
    (randomstring << 'a') if randomstring =~ /\A\w/i 
    p randomstring 
} 
0

如果字符串包含您隨機生成的字符串,那麼new_string將包含輸出字符串字「一'或'an':

new_string = (string=~/^[aeiou]/i ? 'an ' : 'a ') + string 

此方法沒有考慮到t他在輸入字符串的初始值的情況下,並嘗試適當地替換。這只是一個問題,如果你必須處理句子的開頭。

即使你確實需要處理句子的開始,我仍建議你保持簡單,並採取直接的方法檢查第一個字母是否是大寫字母,然後構建new_string在每種情況下都有所不同:對於小寫字母的值,像上面那樣做,但對於大寫字母的值,應該減小輸入字符串的第一個字母,並在三元條件中將A加起來。

最後,請注意我的示例代碼不安全:它假定字符串已經是一個字符串對象,而不是別的(如nil)。如何處理錯誤的輸入取決於你在做什麼,但是每次調用字符串時都要使用.to_s至少使它不會崩潰。

+0

可用的字符串bcos的問題是,如果我使用上述命令,隨機發生器將一個新的字符串附加到'+字符串',這意味着輸出將是正則表達式結果+新隨機數 –

+0

將無法​​正常工作。這種方法在語法上對於「一次性事物」和「度量單位」是不正確的,僅舉幾個例子。 –

+0

我使用的命令是這樣的:def generate_identifier(古) 如果(古=〜/^[AEIOU] /) 返回 「一個」 別的 返回 「一」 端 –