Zlatko Soleniq
Zlatko Soleniq

Reputation: 388

Getting a nth element from a string

How can I get a certain nth element from a string. Like if I want to get every 3rd element from the word GOOGLE how can i do that. SO far i've done this but i dont know what to type after the 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;
    }

Upvotes: 0

Views: 1442

Answers (4)

Kevin Bowersox
Kevin Bowersox

Reputation: 94429

Use the charAt() function of String which returns the char at a specific index passed to the function. Using charAt, I have created a script that will return every third character.

var result = "";

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

If you would like to turn this script into a more reusable function:

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

Working Demo: http://jsfiddle.net/Q7Lx2/

Documentation

Upvotes: 3

Faiz
Faiz

Reputation: 16245

How about this?

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

}

Note that if you start making this compact, you'll end up with the same answer as Kevin's ;-)

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

Upvotes: 1

Xophmeister
Xophmeister

Reputation: 9211

String.charAt(index) will return the character at the specified index, from 0 to String.length - 1. So:

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

If you don't want to include the first character, then change the for loop to:

for (var i = n - 1; i < this.length; i += n) {

Upvotes: 0

Michael Righi
Michael Righi

Reputation: 1353

Here's a function that will work for any number, not just 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"

Upvotes: 0

Related Questions