我想提醒字符串的每个字母,但我不确定如何做到这一点。
如果我有:
var str = 'This is my string';
我希望能够分别提醒T h I s等等。这只是我正在研究的一个想法的开始,但我需要知道如何分别处理每个字母。
我在想,我可能需要在测试字符串的长度后使用分割函数。
我该怎么做呢?
我想提醒字符串的每个字母,但我不确定如何做到这一点。
如果我有:
var str = 'This is my string';
我希望能够分别提醒T h I s等等。这只是我正在研究的一个想法的开始,但我需要知道如何分别处理每个字母。
我在想,我可能需要在测试字符串的长度后使用分割函数。
我该怎么做呢?
当前回答
如果提醒的顺序很重要,使用这个:
for (var i = 0; i < str.length; i++) {
alert(str.charAt(i));
}
或者这个:(另见这个答案)
for (var i = 0; i < str.length; i++) {
alert(str[i]);
}
如果提醒的顺序不重要,使用这个:
var i = str.length;
while (i--) {
alert(str.charAt(i));
}
或者这个:(另见这个答案)
var i = str.length;
while (i--) {
alert(str[i]);
}
var str = '这是我的字符串'; 函数问题(){ For (var I = 0;I < str.length;我+ +){ alert (str.charAt (i)); } } 函数dontmatter() { Var I = str.length; 当(i——){ alert (str.charAt (i)); } } < p >如果警报的顺序很重要,使用< a href = " # " onclick = "问题()" > < / >。< / p > <p>如果警报的顺序不重要,使用<a href="#" onclick="dontmatter()">this</a>.</p> . this</a>.
其他回答
还有一个解决方案……
var strg= 'This is my string';
for(indx in strg){
alert(strg[indx]);
}
如果你想在字符级别上对文本进行转换,并在结束时获得转换后的文本,你会这样做:
var value = "alma";
var new_value = [...value].map((x) => x+"E").join("")
步骤如下:
将字符串拆分为字符数组(列表) 通过函子映射每个字符 将生成的字符数组连接到生成的字符串中
注意:如果您需要性能,可能有更好、更优化的解决方案。我把这个作为一个干净的代码风格的方法发布。
如何处理每个文本字母(使用基准测试)
https://jsperf.com/str-for-in-of-foreach-map-2
for
这是迄今为止最经典的一款。如果您计划在性能关键算法中使用它,或者它需要与浏览器版本的最大兼容性,那么应该使用它。
for (var i = 0; i < str.length; i++) {
console.info(str[i]);
}
的……
为…of是新的ES6 for迭代器。大多数现代浏览器都支持。它在视觉上更有吸引力,也不容易出现打字错误。如果您打算在生产应用程序中实现这一点,那么您可能应该使用Babel这样的转译器。
let result = '';
for (let letter of str) {
result += letter;
}
forEach
功能的方法。Airbnb批准。这样做的最大缺点是split(),它创建了一个新数组来存储字符串的每个字母。
为什么?这就强制执行了我们的不可变规则。处理纯函数 返回值比副作用更容易理解。
// ES6 version.
let result = '';
str.split('').forEach(letter => {
result += letter;
});
or
var result = '';
str.split('').forEach(function(letter) {
result += letter;
});
以下是我不喜欢的。
对…
不像……的,你得到的是字母索引而不是字母本身。它的表现非常糟糕。
var result = '';
for (var letterIndex in str) {
result += str[letterIndex];
}
map
函数方法,很好。然而,地图并不是用来做这个的。当需要更改数组中的值时,应该使用它,但实际情况并非如此。
// ES6 version.
var result = '';
str.split('').map(letter => {
result += letter;
});
or
let result = '';
str.split('').map(function(letter) {
result += letter;
});
可以使用str. charat (index)或str[index]访问单个字符。但是后一种方式不是ECMAScript的一部分,所以你最好使用前一种方式。
试试这段代码
function myFunction() {
var text =(document.getElementById("htext").value);
var meow = " <p> <,> </p>";
var i;
for (i = 0; i < 9000; i++) {
text+=text[i] ;
}
document.getElementById("demo2").innerHTML = text;
}
</script>
<p>Enter your text: <input type="text" id="htext"/>
<button onclick="myFunction();">click on me</button>
</p>