JavaScript - 在不影响索引的情况下将元素插入数组?

时间:2016-05-03 18:33:23

标签: javascript arrays regex

我现在正在研究这样的问题,试图找出如何处理索引。这就是问题所在:

我有一个字符串: thisIsGreat 使用的基本操作如下:

var str = "thisIsGreat"; 
str = str.split(''); //Making it an array
.....
str = str.join(''); //String it back again
console.log(str);

所需输出:["t","h","i","s"," ","I","s"," ","G","r","e","a",t"]

我很难在不影响索引的情况下在这些单词之间插入空格。我尝试过类似的东西,但它没有用。

for (var i = 0; i < str.length; i++){
     if (str[i]+1 == (str[i].toUpperCase())+1)
      str[i] = " ";
}

有没有办法解决这个问题?有什么想法吗?

5 个答案:

答案 0 :(得分:8)

你可以使用积极前瞻的替换。

&#13;
&#13;
var str = "thisIsGreat";
   
str = str.replace(/(?=[A-Z])/g, ' ').split('');
document.write('<pre>' + JSON.stringify(str, 0, 4) + '</pre>');
&#13;
&#13;
&#13;

答案 1 :(得分:4)

你的问题不是很清楚,如果你只是想在每个大写字母前插入一个空格,这对于正则表达式来说相当容易:

&#13;
&#13;
r = "thisIsGreat".replace(/[A-Z]/g, " $&");
alert(r)
&#13;
&#13;
&#13;

答案 2 :(得分:3)

使用您自己的逻辑

<form method="post">
    {{ msform }}
    {{ synform }}
</form>

如果您不希望结果为字符串,则最后删除连接。

https://jsfiddle.net/Ldp58onu/2/

答案 3 :(得分:1)

只需撤消for循环。

for (var i = str.length - 1; i >= 0; i--){
     if (str[i]+1 == (str[i].toUpperCase())+1)
      str[i] = " ";
}

答案 4 :(得分:1)

'thisIsGreat'.replace(/([A-Z])/g,' $1').split('').join('", "')
//Output: "t", "h", "i", "s", " ", "I", "s", " ", "G", "r", "e", "a", "t"