Предположим, что у меня есть строки, как показано ниже:
_4_5
_15_16
Теперь я хочу, чтобы они разделили и получили значения в переменных типа
i=4, j=5
i=15, j=16
Как это можно сделать?
Разделите строку символами подчеркивания и вытащите части:
string s = "_4_5";
string[] parts = s.Split(new [] {'_'},StringSplitOptions.RemoveEmptyEntries);
i = int.Parse(parts[0]);
j = int.Parse(parts[1]);
Некоторые вещи, которые нужно добавить:
TryParse
(действительно ли номера действительно номера?) В дополнение к ответу D Stanley, если у вас будет неизвестное количество переменных (другими словами, не только i
или j
), вы можете использовать этот метод:
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();
}
}
Это позволит вам иметь не более двух номеров на строку ввода. Таким образом, вы можете передавать строки типа _8_12
или _8_12_13_19_25
или даже просто _8
.