Convert all string-integers into numbers

Photoshop Script Snippets - Note: Full Scripts go in the Photoshop Scripts Forum

Moderators: Tom, Kukurykus

didakov88
Posts: 3
Joined: Sun Sep 25, 2016 7:11 pm

Convert all string-integers into numbers

Post by didakov88 »

Hi,
Here is a way to convert all integers from a string into numbers without using parseInt method.

Code: Select all

String.prototype.parseAllInt = function (){

//Array to hold the numbers
var numArray = [];

//Use replace to find all sequences of digits
this.replace( /\d+/g, function (a, b, c){
//When multiplying a coercion is made and the string is converted to number
//All numbers multiplied by 1 will return the same number
numArray.push ( a * 1 );
})

return numArray;
}


var myString = "125; 3; 49";
myString = myString.parseAllInt ();

alert ( typeof myString[0] );
User avatar
Kukurykus
Posts: 528
Joined: Mon Jul 25, 2016 12:36 pm

Re: Convert all string-integers into numbers

Post by Kukurykus »

Nice, but this way you are limited to only 3 numbers, or each time you will change length of function arguments in your protorype, so I changed it a little by adding few things, mainly a loop it let to use it with whatever amount of string numbers you want to convert it to sole numbers:

Code: Select all

Array.prototype.parseAllInt = function() {
for(arr = [], i = 0; i < this.split(';').length; i++) {
arr.push(eval(this[i].replace(/(\d+)/, '+$1')))
}
}

'125; 3; 49'.parseAllInt()
Just a note: there are now Array instead of String in prototype, and split method to change String to Array, I used also + characater in front of all strings what is equivalent to Number, and then for each iteration of loop I evaluated a result which got pushed to new array as a number.
didakov88
Posts: 3
Joined: Sun Sep 25, 2016 7:11 pm

Re: Convert all string-integers into numbers

Post by didakov88 »

Hi Kukurykus
It throws error "parseAllInt is not a function".

P.S. From what i know is good idea to avoid eval (don't remember the exact reason).
User avatar
Kukurykus
Posts: 528
Joined: Mon Jul 25, 2016 12:36 pm

Re: Convert all string-integers into numbers

Post by Kukurykus »

When you write html scripts I heard the same, but fortunately it's not HTML code. Anyway eval is about 30% of all my scripts, so far I didn't have problem with it.

I fixed that code, now it will be working, however I'll try later to make it simpler:

Code: Select all

Array.prototype.parseAllInt = function() {
for(arr = [], i = 0; i < this.length; i++) {
arr.push(eval(this[i].replace(/(\d+)/, '+$1')))
}
}

'125; 3; 49'.split(';').parseAllInt()
And here's final reconstructed version. Array is changed back to String, otherwise I had to keep .split method together with String Numbers. I had also made that variable I bound current this to:

Code: Select all

String.prototype.parseAllInt = function() {
for(arr = [], i = 0; i < (that = this.split(';')).length; i++) {
arr.push(eval(that[i].replace(/(\d+)/, '+$1')))
}
}

'125; 3; 49'.parseAllInt()