## Convert all string-integers into numbers

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

Moderators: xbytor, DavideBarranca, Paul MR

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

### Convert all string-integers into numbers

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

Kukurykus
Posts: 156
Joined: Mon Jul 25, 2016 12:36 pm

### Re: Convert all string-integers into numbers

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

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

Kukurykus
Posts: 156
Joined: Mon Jul 25, 2016 12:36 pm

### Re: Convert all string-integers into numbers

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()```