变量的大写第一个字母

时间:2011-02-25 20:44:26

标签: javascript jquery

我在网上搜索过,找不到任何可以帮到我的东西。我想在变量中使每个单词大写的第一个字母。

到目前为止,我已尝试过:

toUpperCase();

没有运气,因为它标榜了所有字母。

24 个答案:

答案 0 :(得分:216)

使用.replace[MDN]功能将以大写字母开头的小写字母替换为。

var str = "hello world";
str = str.toLowerCase().replace(/\b[a-z]/g, function(letter) {
    return letter.toUpperCase();
});
alert(str); //Displays "Hello World"


编辑:如果你正在处理的不仅仅是a-z之类的单词字符,那么以下(更复杂的)正则表达式可能更适合你的目的。

var str = "петр данилович björn über ñaque αλφα";
str = str.toLowerCase().replace(/^[\u00C0-\u1FFF\u2C00-\uD7FF\w]|\s[\u00C0-\u1FFF\u2C00-\uD7FF\w]/g, function(letter) {
    return letter.toUpperCase();
});
alert(str); //Displays "Петр Данилович Björn Über Ñaque Αλφα"

答案 1 :(得分:65)

更简单的方法:

$('#test').css('textTransform', 'capitalize');

我必须给予@Dementic一些荣誉,因为它引领我走上了正确的道路。比你们提出的任何建议都简单得多。

答案 2 :(得分:23)

http://phpjs.org/functions/ucwords:569有一个很好的例子

function ucwords (str) {
    return (str + '').replace(/^([a-z])|\s+([a-z])/g, function ($1) {
        return $1.toUpperCase();
    });
}

(为简洁起见,省略了来源的功能评论。详情请参阅链接来源)

编辑:请注意,此函数会将每个单词的第一个字母(如您的问题所示)大写,而不仅仅是字符串的第一个字母(正如您的问题标题所示)

答案 3 :(得分:13)

我想你可以使用substring()和toUpperCase()来拉出第一个字符,大写它,然后用结果替换字符串的第一个字符。

myString = "cheeseburger";
firstChar = myString.substring( 0, 1 ); // == "c"
firstChar.toUpperCase();
tail = myString.substring( 1 ); // == "heeseburger"
myString = firstChar + tail; // myString == "Cheeseburger"

我认为这对你有用。另一件需要考虑的事情是,如果正在显示这些数据,您可以在其容器中添加一个具有CSS属性的类" text-transform:capitalize"。

答案 4 :(得分:13)

只是想添加一个纯粹的javascript解决方案(没有JQuery)

function capitalize(str) {
  strVal = '';
  str = str.split(' ');
  for (var chr = 0; chr < str.length; chr++) {
    strVal += str[chr].substring(0, 1).toUpperCase() + str[chr].substring(1, str[chr].length) + ' '
  }
  return strVal
}

console.log(capitalize('hello world'));

答案 5 :(得分:9)

要做到这一点,如果你打算使用

,你甚至不需要Javascript
$('#test').css('textTransform', 'capitalize');

为什么不像css这样做

#test,h1,h2,h3 { text-transform: capitalize; }

或者将其作为一个班级并将该班级应用到您需要的地方

.ucwords { text-transform: capitalize; }

答案 6 :(得分:6)

有没有听说过substr()

首发:

$("#test").text($("#test").text().substr(0,1).toUpperCase()+$("#test").text().substr(1,$("#test").text().length));


[更新:]

感谢@FelixKling提示:

$("#test").text(function(i, text) {
    return text.substr(0,1).toUpperCase() + text.substr(1);
});

答案 7 :(得分:5)

在@ peter-olson的回答基础上,我采用了一种更加面向对象的方法而不使用jQuery:

String.prototype.ucwords = function() {
    return this.toLowerCase().replace(/\b[a-z]/g, function(letter) {
        return letter.toUpperCase();
    });
}

alert("hello world".ucwords()); //Displays "Hello World"

示例:http://jsfiddle.net/LzaYH/1/

答案 8 :(得分:4)

最简单的方法

let str="hiren raiyani"
str.toLowerCase().replace(/(?<= )[^\s]|^./g, a => a.toUpperCase());

用户定义的功能:

function capitalize(str){
 return str.toLowerCase().replace(/(?<= )[^\s]|^./g, a => a.toUpperCase());
}

输出: Hiren Raiyani

使用代码作为用户定义的函数或直接使用

答案 9 :(得分:3)

var ar = 'foo bar spam egg'.split(/\W/);
for(var i=0; i<ar.length; i++) {
  ar[i] = ar[i].substr(0,1).toUpperCase() + ar[i].substr(1,ar[i].length-1) 
}
ar.join(' '); // Foo Bar Spam Egg

答案 10 :(得分:3)

var mystring = "hello World"
mystring = mystring.substring(0,1).toUpperCase() + 
mystring.substring(1,mystring.length)

console.log(mystring) //gives you Hello World

答案 11 :(得分:2)

您可以使用text-transform: capitalize;进行此项工作 -

HTML -

<input type="text" style="text-transform: capitalize;" />

JQuery -

$(document).ready(function (){
   var asdf = "WERTY UIOP";
   $('input').val(asdf.toLowerCase());
});

Try This

注意:它只是改变了字符串的可视化表示。如果你提醒这个字符串,它总是显示字符串的原始值。

答案 12 :(得分:2)

完全基于@Dementric的答案,这个解决方案已准备好用一个简单的jQuery方法调用,'ucwords'...感谢所有在这里贡献的人!!!

$.extend({
ucwords : function(str) {
    strVal = '';
    str = str.split(' ');
    for (var chr = 0; chr < str.length; chr++) {
        strVal += str[chr].substring(0, 1).toUpperCase() + str[chr].substring(1, str[chr].length) + ' '
    }
    return strVal
}

});

示例: 这可以使用方法

调用
var string = "this is a test";
string = $.ucwords(string); // Returns "This Is A Test"

答案 13 :(得分:1)

您可以尝试使用PHP中ucwords功能的简单代码。

function ucWords(text) {
    return text.split(' ').map((txt) => (txt.substring(0, 1).toUpperCase() + txt.substring(1, txt.length))).join(' ');
}
ucWords('hello WORLD');

它将使大写字母保持不变。

答案 14 :(得分:0)

var country= $('#country').val();

var con=country[0].toUpperCase();

ctr= country.replace(country[0], con);
   

无需创建任何函数即可

答案 15 :(得分:0)

使用下面的函数

const capitalize = (s) => {
  if (typeof s !== 'string') return ''
  return s.charAt(0).toUpperCase() + s.slice(1)
}

capitalize('test') //'Test'
capitalize('name') //'Name'

答案 16 :(得分:0)

它很简单,如下所示:

string = 'test';
newString = string[0].toUpperCase() + string.slice(1);
alert(newString);

答案 17 :(得分:0)

在JS中大写首字母的最简单方法

var string = "made in india";

string =string .toLowerCase().replace(/\b[a-z]/g, function(letter){return  letter.toUpperCase();});

alert(string );

结果: “印度制造”

答案 18 :(得分:0)

这是unicode安全的ucwords()函数,该函数还尊重俄语Засс-Ранцев等双重姓氏以及诸如Honoréde Balzac,d'Artagnan,Vincent van Gogh,Otto von Bismarck,SulaymānibnDāwūd等一些贵族名称:

String.prototype.ucwords = function() {
  return this.toLowerCase()
    .replace(/(^|\s|\-)[^\s$]/g, function(m) {
       return m.toUpperCase();
    })
    // French, Arabic and some noble names...
    .replace(/\s(Of|De|Van|Von|Ibn|Из|Ван|Фон|Ибн)\s/g, function(m) { // Honoré de Balzac, Vincent van Gogh, Otto von Bismarck, Sulaymān ibn Dāwūd etc.
       return m.toLowerCase();
    })
    .replace(/(^|\s)(D|Д)(['’][^\s$])/g, function(m, p1, p2, p3) { // D'Artagnan or d'Artagnan / Д’Артаньян или д’Артаньян
       return p1 + (p1 === "" ? p2/*.toUpperCase()*/ : p2.toLowerCase()) + p3.toUpperCase();
    });
}

答案 19 :(得分:0)

 var str = "HELLO WORLD HELLO WORLD HELLO WORLD HELLO WORLD";
         str = str.replace(
                        /([A-Z])([A-Z]+)/g,
        				function (a, w1, w2) {
                            return w1 + w2.toLowerCase();
                        });
alert(str);

答案 20 :(得分:0)

没有JQuery

String.prototype.ucwords = function() {
    str = this.trim();
    return str.replace(/(^([a-zA-Z\p{M}]))|([ -][a-zA-Z\p{M}])/g, function(s){
        return s.toUpperCase();
    });
};

console.log('hello world'.ucwords()); // Display Hello World

答案 21 :(得分:0)

HTML:

<input class="capitalize" name="Address" type="text" value="" />

使用jQuery的Javascript:

$(".capitalize").bind("keyup change", function (e) {
        if ($(this).val().length == 1)
            $(this).val($(this).val().toUpperCase());
        $(this).val($(this).val().toLowerCase().replace(/\s[\p{L}a-z]/g, function (letter) {
            return letter.toUpperCase();
        }))
    });

答案 22 :(得分:0)

我已使用此代码 -

function ucword(str){
    str = str.toLowerCase().replace(/(^([a-zA-Z\p{M}]))|([ -][a-zA-Z\p{M}])/g, function(replace_latter) { 
        return replace_latter.toUpperCase();
    });  //Can use also /\b[a-z]/g
    return str;  //First letter capital in each word
}

var uc = ucword("good morning. how are you?");
alert(uc);

答案 23 :(得分:0)

在大写第一个字母之前要降低的字符串。

(两者都使用Jquery语法)

function CapitaliseFirstLetter(elementId) {
    var txt = $("#" + elementId).val().toLowerCase();
    $("#" + elementId).val(txt.replace(/^(.)|\s(.)/g, function($1) {
    return $1.toUpperCase(); }));
    }

另外还有一个大写WHOLE字符串的函数:

function CapitaliseAllText(elementId) {
     var txt = $("#" + elementId).val();
     $("#" + elementId).val(txt.toUpperCase());
     }

在文本框的点击事件中使用的语法:

onClick="CapitaliseFirstLetter('TextId'); return false"