2015-11-13 96 views
4

我有一個大的字符串數組像這樣的的第一個字母:使字符串中的大寫單詞

「綜合工程5年(BSC在行業一年)」我想利用單詞的第一個字母,並使其餘的單詞小寫。所以'集成'將成爲'綜合'。

作品中的第二個扳手 - 我想要一個例外,如'和','','','','與'。

所以上面的例子將成爲:

綜合工程5年(BSC在行業一年)。

我該怎麼做Go?我可以編寫循環/數組來管理變化,但實際的字符串轉換就是我努力的方向。

回答

20

有一個在串包的內置函數調用的名稱

請參閱https://play.golang.org/p/07dl3hMuGH

+1

您可能希望在調用Title func之前先小寫文本 – boug

+1

答案如何解決問題中提到的異常? (和,在,與) – tomasz

-6

那麼你沒有指定你使用的語言,所以我會給你一個普遍的答案。你有一個包含一串字符串的數組。首先,我會將整個字符串設置爲小寫字母,然後通過字符串中的每個字符(大寫第一個字符,保持小寫)。此時你需要尋找空間,這將幫助你劃分每個字符串中的單詞。找到空格後的第一個字符顯然是一個不同的詞,應該大寫。您可以驗證下一個單詞是否與「或」同時出現。

我不是在電腦前,所以我不能給一個具體的例子,但我希望這得到在至少

+0

他用圍棋。標記是這裏的主要指標,雖然在問題中也提到了它。 – tomasz

5

您可以使用regular expressions此任務的正確方向。 A \w+正則表達式將匹配所有單詞,然後通過使用Regexp.ReplaceAllStringFunc,您可以用預期內容替換單詞,跳過停用詞。在你的情況下,strings.ToLower和也將有所幫助。

例子:

str := "INTEGRATED ENGINEERING 5 Year (BSC with a Year in Industry)" 

// Function replacing words (assuming lower case input) 
replace := func(word string) string { 
    switch word { 
    case "with", "in", "a": 
     return word 
    } 
    return strings.Title(word) 
} 

r := regexp.MustCompile(`\w+`) 
str = r.ReplaceAllStringFunc(strings.ToLower(str), replace) 

fmt.Println(str) 

// Output: 
// Integrated Engineering 5 Year (Bsc with a Year in Industry) 

https://play.golang.org/p/uMag7buHG8

您可以輕鬆地適應這個以您的字符串數組的。

相關問題