如何将文本区域中每个单词的首字母大写?

How to capitalize first letter of every single word in a text area?

我有一个多行文本字段 ("Adressfeld"),我想将此文本区域中的每个第一个字母大写,并将其余每个单词的其余部分小写。

这是我的尝试:

function capitalize(Eingabe){
Eingabe = this.getField("Adressfeld").value;
var strArr = Eingabe.split(" ");
var newArr = [];

for(var i = 0 ; i < strArr.length ; i++ ){

var FirstLetter = strArr[i].charAt(0).toUpperCase();
var restOfWord = strArr[i].slice(1).toLowerCAse();

newArr[i] = FirstLetter + restOfWord;

}

return newArr.join(' ');

} 

Ausgabe = this.getField("Empfängername");
Ausgabe.value = capitalize();

对于上面显示的脚本,文本区域第一行中的每个单词都是大写的。但是在其他每一行中,第一个词都没有大写。 我必须如何更改脚本才能使其正常工作? 谢谢,

你是说类似的意思吗?

var textToArray = document.getElementById('myTextarea').value.split('\n');
/* Hier eine Schleife zur Bearbeitung von textToArray */
var arrayToString = textToArray.join(' ');

split 操作失败 -- 第一个 split 的结果无法在另一个字符上再次拆分。

我认为没有理由首先用单一类型 \n 替换 returns 然后尝试拆分 \n space。将 returns 替换为单个 space 然后才拆分会更容易:

var strArr = String(Eingabe.value).replace(/[\r\n]+/g," ").split(" ");

这样,剩下的似乎就可以了。


这是另一种方法,可能有效也可能无效(这取决于 Javascript 对 "word boundary" \b 的解释是否与您自己的一致):

function capitalize(Eingabe){
// Eingabe = this.getField("Adressfeld");
    var strArr = String(Eingabe.value).replace(/[\r\n ]+/g,' ');
    strArr = strArr.replace (/\b[a-z]/g, function(found) { return found.toUpperCase(); });
    return strArr;
}

一些事情:

• 函数的参数是Eingabe。在这种情况下,这是一个包含值的变量,在函数的第一行重新定义根本没有意义。函数看起来像这样,您不需要参数,因此,您的函数定义如下所示:

function capitalize() {

• 完成后,将 Eingabe 正确定义为 var Eingabe

• 对于数组,您本质上是想创建一个二维数组。首先创建行数组,然后循环遍历这些行,正如@Entimon

在答案中所建议的那样

• 你结束于

this.getField("Adressfeld").value = capitalize() ;

这样就可以了。

感谢您的帮助! 正确答案基于 Arunprasanth KV 的 jsfiddle.net/svh1jd99

function capitalize()

{
var capitalize = this.getField("Adressfeld").value;
var done = capitalize.replace(/\b./g, function(m){ return m.toUpperCase();});
return done;
};

this.getField("Adressfeld").value = capitalize();

再次感谢您的帮助。

我在下面包含了一个例子,试试看,它会解决你的问题

Html

<input type="button" value="clk" onclick="z();"/>
<textarea rows="4" id="text" cols="50">

JS

function z()
{

var z=document.getElementById("text").value;
var x=z.replace(/\b./g, function(m){ return m.toUpperCase(); });
alert(x);
}

DEMO

我想将每个单词的每个第一个字母转换为大写字母,所有其他字母都为小写字母然后首先将整个字符串转换为 lowercase.Then 执行与上述相同的操作。

DEMO2

通过使用 jQuery,您可以如下所示执行此操作:

演示:https://jsfiddle.net/cxow8198/3/

<input type="text" id="input">

<script>
//usage
$("input").keyup(function() {
   toUpper(this);
});

//function
function toUpper(obj) {
    var mystring = obj.value;
    var sp = mystring.split(' ');
    var wl=0;
    var f ,r;
    var word = new Array();
    for (i = 0 ; i < sp.length ; i ++ ) {
        f = sp[i].substring(0,1).toUpperCase();
        r = sp[i].substring(1).toLowerCase();
        word[i] = f+r;
    }
    newstring = word.join(' ');
    obj.value = newstring;
    return true;   
}
</script>

查询代码片段,使字符串中每个单词的首字母大写。这可用于防止用户在将数据输入表单时输入标题或文本的全部大写。希望这有助于...