【问题标题】:Getting a nth element from a string从字符串中获取第 n 个元素
【发布时间】:2012-12-13 10:39:32
【问题描述】:

如何从字符串中获取某个特定的第 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;
    }

【问题讨论】:

  • 好吧,如果你把它放在一个数组中,你可以通过 yourstring[2] 访问给定从 0 到 2 的基于零的数组是第三个元素。或者你可以使用charAt

标签: javascript string indexing


【解决方案1】:

使用StringcharAt() 函数返回传递给函数的特定索引处的字符。使用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/

Documentation

【讨论】:

    【解决方案2】:

    这个怎么样?

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

    【讨论】:

    • 令人讨厌的是 IE 不允许使用字符串索引器,因此 string.charAt 优于 string[]
    【解决方案3】:

    这是一个适用于任何数字的函数,而不仅仅是 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"
    

    【讨论】:

      【解决方案4】:

      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) {
      

      【讨论】:

      • 循环不应该从 n 开始吗?如果我们返回每 3 个字符,它不应该输出 GG,它应该是字符 1 和 4。
      • @KevinBowersox 请参阅编辑,将循环更改为从 n - 1 开始,在 n = 3 的情况下,将在索引 2 和 5 处输出字符,它们分别是第 3 和第 6 个字符: O和E
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-14
      • 2018-12-31
      • 2023-03-08
      • 2021-09-03
      • 1970-01-01
      • 2021-04-07
      相关资源
      最近更新 更多