我想提醒字符串的每个字母,但我不确定如何做到这一点。

如果我有:

var str = 'This is my string';

我希望能够分别提醒T h I s等等。这只是我正在研究的一个想法的开始,但我需要知道如何分别处理每个字母。

我在想,我可能需要在测试字符串的长度后使用分割函数。

我该怎么做呢?


纯javascript的一个可能的解决方案:

for (var x = 0; x < str.length; x++)
{
    var c = str.charAt(x);
    alert(c);
}

可以使用str. charat (index)或str[index]访问单个字符。但是后一种方式不是ECMAScript的一部分,所以你最好使用前一种方式。


你可以试试这个

var arrValues = 'This is my string'.split('');
// Loop over each value in the array.
$.each(arrValues, function (intIndex, objValue) {
    alert(objValue);
})

你可以像这样得到一个由单个字符组成的数组

var test = "test string",
    characters = test.split('');

然后循环使用常规Javascript,否则你可以迭代字符串的字符使用jQuery by

var test = "test string";

$(test.split('')).each(function (index,character) {
    alert(character);
});

如果提醒的顺序很重要,使用这个:

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>.


如果你想动画每个字符,你可能需要用span元素来包装它;

var $demoText = $("#demo-text");
$demoText.html( $demoText.html().replace(/./g, "<span>$&amp;</span>").replace(/\s/g, " "));

我认为这是最好的方法,然后处理张成的空间。(例如TweenMax)

TweenMax.staggerFromTo( $demoText.find(“span”), 0.2, {autoAlpha:0}, {autoAlpha:1}, 0.1 );


可能不止是解决了。只是想提供另一个简单的解决方案:

var text = 'uololooo';

// With ES6
[...text].forEach(c => console.log(c))

// With the `of` operator
for (const c of text) {
    console.log(c)
}

// With ES5
for (var x = 0, c=''; c = text.charAt(x); x++) { 
    console.log(c); 
}

// ES5 without the for loop:
text.split('').forEach(function(c) {
    console.log(c);
});

还有一个解决方案……

var strg= 'This is my string';
for(indx in strg){
  alert(strg[indx]);
}

当我需要写短代码或一行代码时,我使用这个“hack”:

'Hello World'.replace(/./g, function (char) {
    alert(char);
    return char; // this is optional 
});

它不会计算换行,这可能是好事,也可能是坏事。如果你想包含换行符,替换:/。/ with /[\S\ S]/。您可能看到的其他一行程序可能使用.split(),这存在许多问题


你现在可以使用in关键字。

var s = '异形'; (var c in s) alert(s[c]);


这里的大多数答案(如果不是全部的话)都是错误的,因为只要字符串中有字符在Unicode BMP(基本多语言平面)之外,它们就会中断。这意味着所有的表情符号都将被破坏。

JavaScript对所有字符串使用UTF-16 Unicode。在UTF-16中,BMP以外的字符由两部分组成,称为“代理对”,这里的大多数答案将单独处理这种对的每个部分,而不是作为单个字符处理。

至少从2016年开始,现代JavaScript的一种方法是使用新的String迭代器。下面是一个来自MDN的例子:

var string = 'A\uD835\uDC68B\uD835\uDC69C\uD835\uDC6A'; For (var v of string) { 警报(v); } / /“A” / /“\ uD835 \ uDC68” / /“B” / /“\ uD835 \ uDC69” / /“C” / /“\ uD835 \ uDC6A”


试试这段代码

    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>

如果你想在字符级别上对文本进行转换,并在结束时获得转换后的文本,你会这样做:

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;
});

在今天的JavaScript中,你可以

Array.prototype.map。call('This is my string', (c) => c+c)

显然,c+c表示你想用c做的任何事情。

这将返回

[“TT”, “hh”, “ii”, “ss”, “”“, ”ii“, ”ss“, ”, “mm”, “yy”, “ ”ss“, ”tt“, ”rr“, ”ii“, ”nn“, ”gg“]


New JS允许这样做:

const str = 'This is my string';
Array.from(str).forEach(alert);

您可以使用split()将此字符串转换为字符数组,然后遍历它。

Const STR = "javascript"; const strArray = str.split("); strArray。Map (s => console.log(s));


你可以简单地在数组中迭代它:

for(var i in txt){
    console.log(txt[i]);
}

在ES6 / ES2015中,你可以用迭代器遍历字符串,就像你在

的象征。迭代器中数

var str = 'Hello'; var it = str[Symbol.iterator](); 对于(let v of it) { console.log (v) } / /“H” / /“e” / /“l” / /“l” / /“o”

它是一种声明式风格。优势是什么?您不必关心如何访问字符串的每个元素。


//有很多方法,但我觉得这个最简单。 let str = '这是我的字符串'; For (let character of str) console.log(字符)