2013-03-01 31 views
1

是否可以創建一個JavaScript函數,該函數可以將字符串轉換爲標題大小寫,但是可以將字符串轉換爲非ASCII(Unicode)字符?例如與像字符:標題在JavaScript中用於變音符號的情況(非ASCII)

Áá Àà Ăă Ắắ Ằằ Ẵẵ Ẳẳ Ââ Ấấ Ầầ Ẫẫ Ẩẩ Ǎǎ Åå Ǻǻ Ää Ǟǟ Ãã 
Éé Èè Ĕĕ Êê Ếế Ềề Ễễ Ểể Ěě Ëë Ẽẽ Ėė Ȩȩ Ḝḝ Ęę Ēē Ḗḗ Ḕḕ 
etc. 

例如,如果字符串是「安德斯·埃」,應該將其轉化爲「安德斯·埃」。 already exists它將轉變爲「AndersåNgström」的腳本。

+0

''å'.toUpperCase()'爲我的作品... – elclanrs 2013-03-01 03:56:03

+0

是toUpperCase()爲我工作太多,但標題案例功能不適用於單詞,在開始工作'å',因爲JavaScript不會將它正確地包含到「整個單詞」中(\ w) – BearCode 2013-03-01 04:13:36

+0

哦,我看到了,請檢查我的答案,它仍然可以在沒有'\ w'的情況下完成。 – elclanrs 2013-03-01 04:30:11

回答

15

試試這個:

var str = 'anders ångström'; 

str = str.replace(/[^\s]+/g, function(word) { 
    return word.replace(/^./, function(first) { 
    return first.toUpperCase(); 
    }); 
}); 

console.log(str); //=> "Anders Ångström" 
+0

它工作得很好。非常感謝! – BearCode 2013-03-01 21:21:09

+1

對不起,我只注意到它不適用於包含破折號(「 - 」)的名稱,例如「luise meyer-schützmeister」。它將把它變成「Luise Meyer-schützmeister」。有什麼機會可以改進它? – BearCode 2013-08-08 04:15:21

+4

要支持破折號和單引號,請將/ [^ \ s] +/g更改爲/ [^ - '\ s] +/g – 2013-09-03 13:41:13

-1

Javascript的內置轉換支持Unicode,例如"å".toUpperCase()返回"Å"。所以我不確定你的「現有腳本」做錯了什麼。

但是,如果您需要完整的支持Unicode的大小寫轉換(或其他Unicode支持),您可能需要查看unicode.js

+0

謝謝。無論如何,我需要一個Title Case函數(來自上面鏈接的更好的toTitleCase()版本),它也適用於非ASCII。標題大小寫功能是大寫字母和整個單詞匹配功能的組合。 – BearCode 2013-03-01 04:16:47

+1

請問downvoter請解釋downvote?謝謝。 – 2014-10-26 00:18:52

相關問題