Which is the fastest method for convert an string's array ["1","2","3"] in a int's array [1,2,3] in c#?
thanks
We can convert String to an int in java using Integer. parseInt() method. To convert String into Integer, we can use Integer. valueOf() method which returns instance of Integer class.
In JavaScript parseInt() function (or a method) is used to convert the passed in string parameter or value to an integer value itself. This function returns an integer of base which is specified in second argument of parseInt() function.
Using the stoi() function The stoi() function converts a string data to an integer type by passing the string as a parameter to return an integer value. The stoi() function contains an str argument. The str string is passed inside the stoi() function to convert string data into an integer value.
You convert a string to a number by calling the Parse or TryParse method found on numeric types ( int , long , double , and so on), or by using methods in the System. Convert class. It's slightly more efficient and straightforward to call a TryParse method (for example, int.
string[] arr1 = {"1","2","3"};
int[] arr2 = Array.ConvertAll(arr1, s => int.Parse(s));
The use of Array.ConvertAll
ensures (unlike LINQ Select
/ToArray
) that the array is initialized at the right size. You can possible get a shade quicker by unrolling, but not much:
int[] arr2 = new int[arr1.Length];
for(int i = 0 ; i < arr1.Length ; i++) {
arr2[i] = int.Parse(arr[i]);
}
If you need something faster still (perhaps bulk file/data handling), then writing your own parse might help; the inbuilt one handles a lot of edge-cases - if your data is simpler you really can cut this down a bit.
For an example of an alternative parser:
public static unsafe int ParseBasicInt32(string s)
{
int len = s == null ? 0 : s.Length;
switch(s.Length)
{
case 0:
throw new ArgumentException("s");
case 1:
{
char c0 = s[0];
if (c0 < '0' || c0 > '9') throw new ArgumentException("s");
return c0 - '0';
}
case 2:
{
char c0 = s[0], c1 = s[1];
if (c0 < '0' || c0 > '9' || c1 < '0' || c1 > '9') throw new ArgumentException("s");
return ((c0 - '0') * 10) + (c1 - '0');
}
default:
fixed(char* chars = s)
{
int value = 0;
for(int i = 0; i < len ; i++)
{
char c = chars[i];
if (c < '0' || c > '9') throw new ArgumentException("s");
value = (value * 10) + (c - '0');
}
return value;
}
}
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With