Suppose I've strings like below:
_4_5_15_16
Now I want them to separate and get the values in variables like
i=4, j=5i=15, j=16
How it could be done?
Split the string by underscores and pull out the parts:
string s = "_4_5";
string[] parts = s.Split(new [] {'_'},StringSplitOptions.RemoveEmptyEntries);
i = int.Parse(parts[0]);
j = int.Parse(parts[1]);
Some things to add:
TryParse (are the parts really numbers?)In addition to D Stanley's answer, if you are going to have an unknown number of variables (in other words, not just i or j), you could use this method:
class Program
{
static void Main(string[] args)
{
string s = "_8_12";
Console.WriteLine("Original ==> \"{0}\"", s);
Dictionary<string, int> numbers = ParseNumbers(s);
PrintNumbers(numbers);
s = "_1_19_7";
Console.WriteLine("Original ==> \"{0}\"", s);
numbers = ParseNumbers(s);
PrintNumbers(numbers);
}
private static Dictionary<string, int> ParseNumbers(string s)
{
var variables = new Dictionary<string, int>();
char startVar = 'i'; // Start at 'i' Variable
string[] nums = s.Split('_');
foreach (string num in nums)
{
if (string.IsNullOrWhiteSpace(num))
continue;
variables.Add(startVar.ToString(CultureInfo.InvariantCulture), int.Parse(num));
startVar++;
}
return variables;
}
private static void PrintNumbers(Dictionary<string, int> numbers)
{
foreach (var q in numbers)
{
Console.WriteLine("{0} ==> {1}", q.Key, q.Value);
}
Console.WriteLine();
}
}
This will allow you to have more than just 2 numbers per input line. So you can pass in strings like _8_12 or _8_12_13_19_25 or even just _8.
String.Split: msdn.microsoft.com/en-us/library/system.string.split.aspx