在字符串中大写单词

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在字符串中大写单词相关的知识,希望对你有一定的参考价值。

将字符串中的单词大写的最佳方法是什么?

答案

使用ES6的箭头函数,在字符串中大写单词的最短实现如下:

'your string'.replace(/w/g, l => l.toUpperCase())
// => 'Your String'

ES5兼容实现:

'your string'.replace(/w/g, function(l){ return l.toUpperCase() })
// => 'Your String'

正则表达式基本匹配给定字符串中每个单词的第一个字母,并仅将该字母转换为大写:

  • 匹配单词边界(单词的开头或结尾);
  • w匹配以下元字符[a-zA-Z0-9]。

For non-ASCII characters refer to this solution instead

'ÿöur striñg'.replace(/(^|s)S/g, l => l.toUpperCase())

此正则表达式匹配给定字符串中的第一个字母和前面有空格的每个非空白字母,并仅将该字母转换为大写:

  • s匹配一个空白字符
  • S匹配非空白字符
  • (x|y)匹配任何指定的替代品

这里可以使用非捕获组,如下/(?:^|s)S/g,尽管我们的正则表达式中的g标志无论如何都不会按设计捕获子组。

干杯!

另一答案

这应该涵盖大多数基本用例。

const capitalize = (str) => {
    if (typeof str !== 'string') {
      throw Error('Feed me string')
    } else if (!str) {
      return ''
    } else {
      return str
        .split(' ')
        .map(s => {
            if (s.length == 1 ) {
                return s.toUpperCase()
            } else {
                const firstLetter = s.split('')[0].toUpperCase()
                const restOfStr = s.substr(1, s.length).toLowerCase()
                return firstLetter + restOfStr
            }     
        })
        .join(' ')
    }
}


capitalize('THIS IS A BOOK') // => This Is A Book
capitalize('this is a book') // => This Is A Book
capitalize('a 2nd 5 hour boOk thIs weEk') // => A 2nd 5 Hour Book This Week

编辑:提高映射的可读性。

另一答案

简洁的ES6方式可能看起来像这样。

const capitalizeFirstLetter = s => s.charAt(0).toUpperCase() + s.slice(1)

这只会使第一个字母大写,并且不会影响句子外壳的其余部分。

另一答案

http://www.mediacollege.com/internet/javascript/text/case-capitalize.html是众多答案之一。

谷歌可以满足您的所有需求。

一种天真的方法是用空格分割字符串,将结果数组的每个元素的第一个字母大写并将它连接在一起。这样就留下了现有的大写(例如,html保持HTML并且不会像Html那样变得愚蠢)。如果您不想要这种影响,请在分割之前将整个字符串转换为小写。

另一答案

此代码在点后大写单词:

function capitalizeAfterPeriod(input) { 
    var text = '';
    var str = $(input).val();
    text = convert(str.toLowerCase().split('. ')).join('. ');
    var textoFormatado = convert(text.split('.')).join('.');
    $(input).val(textoFormatado);
}

function convert(str) {
   for(var i = 0; i < str.length; i++){
      str[i] = str[i].split('');
      if (str[i][0] !== undefined) {
         str[i][0] = str[i][0].toUpperCase();
      }
      str[i] = str[i].join('');
   }
   return str;
}
另一答案

我喜欢简单的过程。首先将字符串更改为数组以便于迭代,然后使用地图函数根据需要更改每个单词。

function capitalizeCase(str) {
    var arr = str.split(' ');
    var t;
    var newt;
    var newarr = arr.map(function(d){
        t = d.split('');
        newt = t.map(function(d, i){
                  if(i === 0) {
                     return d.toUpperCase();
                    }
                 return d.toLowerCase();
               });
        return newt.join('');
      });
    var s = newarr.join(' ');
    return s;
  }
另一答案

Jquery或Javascipt没有提供实现此功能的内置方法。

CSS测试转换(text-transform:capitalize;)并不真正大写字符串的数据,但在屏幕上显示大写的渲染。

如果您正在寻找使用普通vanillaJS在数据级别实现此更合法的方法,请使用此解决方案=>

var capitalizeString = function (word) {    
    word = word.toLowerCase();
    if (word.indexOf(" ") != -1) { // passed param contains 1 + words
        word = word.replace(/s/g, "--");
        var result = $.camelCase("-" + word);
        return result.replace(/-/g, " ");
    } else {
    return $.camelCase("-" + word);
    }
}
另一答案

用这个:

String.prototype.toTitleCase = function() {
  return this.charAt(0).toUpperCase() + this.slice(1);
}

let str = 'text';
document.querySelector('#demo').innerText = str.toTitleCase();
<div class = "app">
  <p id = "demo"></p>
</div>
另一答案

您可以使用以下内容来大写字符串中的单词:

function capitalizeAll(str){

    var partes = str.split(' ');

    var nuevoStr = ""; 

    for(i=0; i<partes.length; i++){
    nuevoStr += " "+partes[i].toLowerCase().replace(/w/g, l => l.toUpperCase()).trim(); 
    }    

    return nuevoStr;

}
另一答案

此解决方案不使用正则表达式,支持重音字符,并且几乎每个浏览器都支持。

function capitalizeIt(str) {
    if (str && typeof(str) === "string") {
        str = str.split(" ");    
        for (var i = 0, x = str.length; i < x; i++) {
            if (str[i]) {
                str[i] = str[i][0].toUpperCase() + str[i].substr(1);
            }
        }
        return str.join(" ");
    } else {
        return str;
    }
}    

用法:

console.log(capitalizeIt('çao2ndjavascript program'));

输出:

第二个内部Javascript程序

另一答案

Ivo的答案很好,但我更喜欢在w上不匹配,因为没有必要将0-9和A-Z大写。我们可以忽略这些并且仅匹配a-z。

'your string'.replace(/[a-z]/g, match => match.toUpperCase())
// => 'Your String'

这是相同的输出,但我认为在自我记录代码方面更清晰。

另一答案
String.prototype.capitalize = function() {
    return this.replace(/(?:^|s)S/g, function(a) { return a.toUpperCase(); });
};

用法:

'your string'.capitalize(); // -> 'Your String'

  • 修复了Marco Demaio的解决方案,其中前面有空格的第一个字母没有大写。 ' javascript'.capitalize(); // -> ' Javascript'
  • 可以处理国家符号和重音字母。 'бабушка курит трубку'.capitalize(); // -> 'Бабушка Курит Трубку' 'località àtilacol'.capitalize() // -> 'Località Àtilacol'

ADD-ON我发现它很有用

String.prototype.capitalize = function(lower) {
    return (lower ? this.toLowerCase() : this).replace(/(?:^|s)S/g, function(a) { return a.toUpperCase(); });
};
'javaSCrIPT'.capitalize();      // -> 'JavaSCrIPT'
'javaSCrIPT'.capitalize(true);  // -> 'Javascript'
另一答案
function capitalize(s){
    return s.toLowerCase().replace( /./g, function(a){ return a.toUpperCase(); } );
};

capitalize('this IS THE wOrst string eVeR');

输出:“这是最糟糕的字符串”

更新:

看来这个解决方案取代了我的:https://stackoverflow.com/a/7592235/104380

另一答案

只要输入字符串中没有重音字母,片段(Java) | 机试题+算法思路+考点+代码解析 2023

如何在猫鼬中大写字符串?

如何通过C#中的特定片段从句子中提取整个单词?

在 Objective-C 中大写或更改 NSString 的大小写

21个常用代码片段

统计字符串中大写小写数字的个数(含遍历)