2011-09-12 354 views
0
function toTitleCase(str){ 
    var styleName = $("a.monogramClassSelected").attr("styleKey"); 
     if (styleName == 'script') { 
     return str.replace(/\w\S*/g, function(txt){return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();}).replace(/\s/, ''); 
     } else { 
     return str.replace(/\w\S*/g, function(txt){return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();}); 
     } 

} 

這可以工作(感謝下面的幫助) - 刪除空格,並有第一個字母大寫。只允許首字母大寫字符串(正則表達式)

不過,我需要不同的功能,並沒有框我的問題正確的第一次。

我需要使用正則表達式只允許大寫首字母。上面的字符串替換方法無法完全工作,因爲用戶可以通過使用空格來解決該方法。所以他們可以有「To Two」。我需要重新修正正則表達式,只允許第一個字母大寫,而不考慮空格。 (和第一個字母不必大寫)

感謝大家的幫助迄今!

+0

什麼語法錯誤,你好嗎? – 2011-09-12 16:30:26

+0

Javascript不支持titlecase,所以這個任務是不可能的。 – tchrist

+0

如果您提供樣本輸入列表和相應的替換字符串,將會很有幫助。 –

回答

0

這將做到這一點:

function UppercaseFirst(str) { 
    str = str.replace(/^\s+/, ''); 
    str = str.charAt(0).toUpperCase() + str.substr(1); 
    return str 
} 

var mystring = " this is a test"; 

alert(UppercaseFirst(mystring)); 
+0

查看問題編輯。 – Jason

+0

已編輯,現在它應該做你什麼(即使有空格第一) – ajax333221

0

只刪除空格,這個工作對我來說:

function toTitleCase(str){ 
    str = str.replace(/\s[A-Z]/, ''); 
    // str = str.replace(/[A-Z]\s/, ''); 
    return str; 
} 
+0

對我不起作用。 – Jason

+0

更新了答案 –

+0

請參閱上面的修改。 – Jason

1

這個正則表達式替換零或正好一個空格,然後由大寫字母只由字母,同時保持其他形式的所有序列的文字未被觸及(允許多個空格)

str.replace(/\s{0,1}([A-Z])(\s*\w*)/g, '$1$2'); 

在替換字符串中可以通過$ 1和$ 2訪問這些組。

regex explaination

樣品

輸入 「從不犯錯的人從來沒有嘗試過任何新的東西 - 愛因斯坦:)」

替換字符串「A personWho從未犯了一個錯誤從未嘗試新事物。-AlbertEinstein :)」

如果您想刪除多個空格而不是大寫字母前面的零個或一個空格,請在上述表達式中使用\s*而不是\s{0,1}

+0

請參閱上面的編輯。 – Jason

+0

更新了答案。 –

+0

並不在此上下文中'\t \t返回str.replace(/ \ W \ S */g時,功能(TXT){返回txt.charAt(0).toUpperCase()+ txt.substr工作(1).toLowerCase ();})。替換(/ \ s {0,1}([A-Z])(\ s * \ w *)/ g,'$ 1 $ 2');' – Jason

相關問題