2017-03-06 29 views
0

我使用這條線爲每個字的所有第一字母善用每個單詞出現故障的第一個字母,當字包含特殊字符

text.replace(/\b\w^\w/g, l => l.toUpperCase()); 

它成功地利用正常的話,例如asif saeed - >Asif Saeed

但是在大寫名稱如"anna alàs i jové"時,它將其轉換爲"Anna AlàS I Jové"S不應該在à之後註冊。另外,我們可以有一個解決方案,它忽略單字母單詞。

回答

0

請試試這個。

var text = "anna alàs i jové"; 
 
String.prototype.initCap = function() { 
 
    return this.toLowerCase().replace(/(?:^|\s)[a-z]/g, function(m) { 
 
    return m.toUpperCase(); 
 
    }); 
 
}; 
 
if (/^[a-zA-Z0-9- ]*$/.test(text) == false) { 
 
    //Inint cap 
 
    console.log(text.initCap()); 
 
    
 
    
 
    //Init cap if length >1 
 
    var temp = text.split(" "); 
 
    var t = ""; 
 
    temp.map(function(value){ 
 
    if(value.length > 1){ 
 
     t += value.initCap() + " "; 
 
    }else{ 
 
     t += value + " "; 
 
    } 
 
    }); 
 
    console.log(t); 
 
}

+0

這工作的結果。謝謝...! –

1

以大寫第一個字母的最好和最簡單的方法是:

function toTitleCase(str) 
{ 
    return str.replace(/\w\S*/g, function(txt){return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();}); 
} 
console.log(toTitleCase("anna alàs i jové")); 

編輯:

在單詞開始與德國的字符,你可以使用:

function toTitleCase1(str) 
    { 
     return str.replace(/[\w\xc0-\xd6\xd8-\xf6\xf8-\xff]+/g, function(txt){return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();}); 
    } 
console.log(toTitleCase1("ànna alàs i jové")); 
+0

當第一字母表特殊字符它例如失敗ànnaalàsijové。它返回àNnaAlàs我Jové這是錯誤的N不應該是資本 –

+0

哦,我錯過了這種情況,現在我編輯了代碼,你可以檢查它 –

相關問題