Solved

# Converting a String to Int[]

Posted on 2007-11-22
513 Views
Last Modified: 2007-11-22
I have the code below, and I am having some weird behaviour when trying to convert a string to an int array. I know all values in the string are numbers and would just like to convert them into an int array so I can do some LUHN checking.

Some issues

The first digit in convert is 4
when I do:

char test = convert[i];

I get 52'4'

where 52 is the ASCII value for 4.

System.Convert.ToInt32(convert[i])

I get 52 where I am really looking for 4.

If I do:

Any ideas?
public static int[] ConvertString(string convert)

{

int[] digits = new int[convert.length];

for (int i = 0; i < convert.Length; i++)

{

digits[i] = System.Convert.ToInt32(convert[i]);

}

return digits;

}
0
Question by:directxBOB
• 4
• 2
• 2
• +2
10 Comments

LVL 7

Expert Comment

52'4'....
you need 4...you have got 52.
then you can find for ' and have 4.
you can you IndexOf method of string class, get this 4 in another string and can convert the new formed string to integer.
0

LVL 7

Expert Comment

seems like you want only 4 then you can use :
str.Remove(0, str.IndexOf("'')); // this would remove 52'
str.Substring(0, str.Length -1); // this would remove last '
now str would have 4 only.

hope it helps.
0

LVL 55

Expert Comment

The best way is to use string.Split() method to separate elements, and a List to build the array dynamically:
public static int[] ConvertString(string convert)

{

string[] elems = convert.Split('\'');

List<int> list = new List<int>;

foreach (string s in elems)

{

if (s.Length > 0)

list.Add(Convert.ToInt32(s));

}

return list.ToArray();

}
0

LVL 20

Expert Comment

I believe that this function will be better for you I have just made.  This will only add digits to an int array and not fallover if your string to convert is l9ike 123456H

Andrew
static int[] ConvertString(string convert)

{

List<int> intList = new List<int>();

foreach (char c in convert)

{

if (char.IsDigit(c))

intList.Add((Int32)Char.GetNumericValue(c));

}

return intList.ToArray();

}
0

LVL 40

Accepted Solution

evilrix earned 400 total points
Subract '0' from the char returned by convert[i]
public static int[] ConvertString(string convert)

{

int[] digits = new int[convert.Length];

for (int i = 0; i < convert.Length; i++)

{

digits[i] = System.Convert.ToInt32(convert[i] - '0');

}

return digits;

}

static void Main(string[] args)

{

ConvertString("01234");

}
0

LVL 20

Assisted Solution

REA_ANDREW earned 100 total points
Oh and

Char.GetNumericValue

Solves that issue you are experiencing about the code being returned and not the actual value of the char

Andrew :-)
0

Author Comment

char x = 9;    //Character '9' = ASCII 57
int b;

b = x - '0';   //That is '9' - '0' = 57 - 48 = 9
0

LVL 20

Expert Comment

Bit of useless info but comparing both my function and that of evilrix , which both work I might point out, BUT

I am surprised to see that evilrix's function is on average 3.9 milliseconds faster than mine.

foreach loops just have performance hits everywhere lol
0

LVL 40

Expert Comment

I suspect the difference is the overhead in calling Char.GetNumericValue and Char.IsDigit
0

LVL 20

Expert Comment

true :-)

0

## Join & Write a Comment Already a member? Login.

This article introduced a TextBox that supports transparent background.   Introduction TextBox is the most widely used control component in GUI design. Most GUI controls do not support transparent background and more or less do not have the…
We all know that functional code is the leg that any good program stands on when it comes right down to it, however, if your program lacks a good user interface your product may not have the appeal needed to keep your customers happy. This issue can…
Excel styles will make formatting consistent and let you apply and change formatting faster. In this tutorial, you'll learn how to use Excel's built-in styles, how to modify styles, and how to create your own. You'll also learn how to use your custo…
Access reports are powerful and flexible. Learn how to create a query and then a grouped report using the wizard. Modify the report design after the wizard is done to make it look better. There will be another video to explain how to put the final p…

#### 744 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

#### Need Help in Real-Time?

Connect with top rated Experts

12 Experts available now in Live!