如何将文本区域中每个单词的首字母大写?
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);
}
我想将每个单词的每个第一个字母转换为大写字母,所有其他字母都为小写字母然后首先将整个字符串转换为 lowercase.Then 执行与上述相同的操作。
通过使用 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>
查询代码片段,使字符串中每个单词的首字母大写。这可用于防止用户在将数据输入表单时输入标题或文本的全部大写。希望这有助于...
我有一个多行文本字段 ("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);
}
我想将每个单词的每个第一个字母转换为大写字母,所有其他字母都为小写字母然后首先将整个字符串转换为 lowercase.Then 执行与上述相同的操作。
通过使用 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>
查询代码片段,使字符串中每个单词的首字母大写。这可用于防止用户在将数据输入表单时输入标题或文本的全部大写。希望这有助于...