0

如何从字符串中获取某个第 n 个元素。就像如果我想从 GOOGLE 这个词中获取每个第三个元素,我该怎么做。到目前为止我已经这样做了,但我不知道在 If 之后输入什么

      function create_string( string ) { 

        var string_length=string.length;

        var new_string=[];

        for( var i=0; i<string_length; i++) {

            if(string[i]%3==0) {



            }

            new_string.push(string[i]);
        }

        return new_string;
    }
4

4 回答 4

3

使用该charAt()函数String返回传递给函数的特定索引处的字符。使用charAt,我创建了一个脚本,它将每三个字符返回一次。

var result = "";

for(var i = 2; i < test.length; i+=3){
   result += test.charAt(i);
}

如果你想把这个脚本变成一个更可重用的函数:

var test = "GOOGLE";

function getEveryNthChar(n, str){
   var result = "";
   for(var i = (n-1); i < test.length; i+=n){
      result += str.charAt(i);
   }
   return result;
}

alert(getEveryNthChar(1,test));
alert(getEveryNthChar(2,test));
alert(getEveryNthChar(3,test));
alert(getEveryNthChar(4,test));

工作演示:http: //jsfiddle.net/Q7Lx2/

文档

于 2012-12-13T10:43:26.617 回答
1

这个怎么样?

function create_string( string ) { 

    var string_length=string.length;

    var new_string=[];

    for( var i=2; i<string_length; i+=3) { // instead of an if, use +=3
       new_string.push(string.charAt(i));
    }

    return new_string.join(""); // turn your array back into a string

}

请注意,如果你开始制作这个紧凑的,你最终会得到与凯文相同的答案;-)

function create_string( s ) { 
    var new_string = '';
    for( var i=2; i<s.length; i+=3) { // instead of an if, use +=3
       new_string += s.charAt(i);
    }
    return new_string; 
}
于 2012-12-13T10:43:28.147 回答
0

这是一个适用于任何数字的函数,而不仅仅是 3:

function stringHop(s, n) {
    var result = "";
    for (var i = 0; i < s.length; i+= n) {
        result += s.charAt(i);
    }
    return result;
}

var foo = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
var bar = stringHop(foo, 2);    // returns "ACEGIKMOQSUWY"
var baz = stringHop(foo, 3);    // returns "ADGJMPSVY"
于 2012-12-13T10:47:13.107 回答
0

String.charAt(index)将返回指定索引处的字符,从 0 到String.length - 1. 所以:

String.prototype.every = function(n) {
  var out = '';

  for (var i = 0; i < this.length; i += n) {
    out += this.charAt(i);
  }

  return out;
}

var str = "GOOGLE";
console.log(str.every(3)) // Outputs: GG

如果您不想包含第一个字符,则将for循环更改为:

for (var i = n - 1; i < this.length; i += n) {
于 2012-12-13T10:47:50.457 回答