将每个字母更改为大写并将其括在方括号中

时间:2018-07-27 11:15:02

标签: javascript regex

正如标题所述,我正在尝试创建一个脚本,该脚本将每个字母都查找为一个字符串,例如将“ a”或“ A”字母转换为句子,将其更改为大写并将其括在方括号中。例如,“我买了[A]足球”。

我将使用此脚本进入一个重命名器应用程序,该应用程序使用Javascript做各种工作。所以我有这两个脚本...

return item.newBasename.replace(/(?=.{1}$)/,'[');

和..

return item.newBasename.replace(/(?=.{0}$)/,']');

基本上可以以某种方式完成我想要的工作,但是就像我手动工作一样!

编辑

此重命名器应用程序默认为我提供此...

function(index, item) { }

我必须将代码写成这样……

function(index, item) {return item.newBasename...etc}

3 个答案:

答案 0 :(得分:3)

您可以将(^| )([a-z])(?=$| )toUpperCase()方法一起用作正则表达式:

var str = 'i bought a soccer ball';
console.log(str.replace(/(^| )([a-z])(?=$| )/g, function($0, $1, $2) {
    return $1 + '[' + $2.toUpperCase() + ']';
}));

正则表达式细目:

  • (^| )捕获输入字符串或空格字符的开头
  • ([a-z])捕获小写字母
  • (?=$| )后跟字符串末尾或空格,与(?!\S)

答案 1 :(得分:2)

不使用regex的解决方案:

var inputStr = "i bought a soccer ball"

var outputStr = inputStr.split(' ')  // separete each words
                        .map(w => w.length === 1 ? '[' + w.toUpperCase() + ']' : w)  // uppercase single letters
                        .join(' ')  // join them with single space

console.log(outputStr);

答案 2 :(得分:2)

您可以使用单词限制功能,轻松找到单个字母,例如\b(\w)\b:-

function formatSentence(sentence){
    return sentence.replace(/\b(\w)\b/g, 
        function($0) {
        return '[' + $0.toUpperCase() + ']';
    })
}