2013-06-05 52 views
0

我想構建一個函數,如果作爲參數的給定字符串是代名詞,則返回true。函數,如果字符串是代名詞,則返回true

我覺得這樣做的一個好方法是檢查它是否以大寫/大寫字母開頭。

如果你知道一個更好的東西是否是代名詞,請告訴我。

但是,爲了檢查第一個字母是大寫/大寫字母,我該怎麼做。

我知道string[0]會給我第一個字母,但是我要比較它以檢查它是否是字母表中的任何大寫/大寫字母?

,我現在所擁有的代碼是

function isPronoun($str){ 
    $result = false; 
    if($str[0]===/*capital letter*/){ 
     $result=true; 
    } 
    return $result; 
} 
+0

代詞或專有名詞 – Orangepill

+3

你的意思是專有名詞?華盛頓/約翰遜/奧巴馬是一個專有名詞,他/她/它是一個代名詞。此外,並非所有專有名詞都以大寫字母開頭:iPhone,iPod,iTunes等 – MikeB

+0

如果字符串包含多於1個單詞,該怎麼辦? – GGio

回答

2

專有名詞如「Mark」,「London」或「Betelgeuse」也以大寫字母開頭,正如句子的第一個單詞一樣,而「he」或「it」則是小寫字母的代詞。

要識別代詞,你需要一個語言解析,如Brill Parser

+1

+1「參宿」 - 與「福特」更好地結合:p –

+1

甚至縣長:) –

+0

所有frood在一起! –

0

嘗試用正則表達式

function isPronoun($str){ 
     return ereg("^[A-Z]", $str); 
} 
+0

這匹配像這樣的東西,但不是這個。 –

+0

@Kinkink謝謝,更新 –

0

我想你的意思是「專有名詞」,而不是代名詞。代詞是像「我」,「你」 ......

無論如何,嘗試這樣的事情:

$is_proper_noun = preg_match("(^[A-Z]\w+$)",$word); 

注意,可以讓這個更復雜,例如:

"(^(?:Ma?c|O')?[A-Z][a-z]+$)" 
+0

第二個正則表達式做什麼?我無法理解那一個。 –

+0

第二個正則表達式的基本意圖是隻允許第一個字母是大寫字母,而其他所有字母都應該是小寫字母,正如專有名詞(除其他之外)縮寫詞的情況一樣。開頭的額外位允許像「McDonald」,「MacGuffin」或「O'Reilley」這樣的名稱 - 注意它仍然不完整,例如它不允許Al'Sudiary或DiNozzo。 –

相關問題