假设我有如下字符串:
_4_5
_15_16
现在我希望它们分开并获取像
这样的变量中的值i=4, j=5
i=15, j=16
怎么做?
答案 0 :(得分:3)
用下划线拆分字符串并拉出部件:
string s = "_4_5";
string[] parts = s.Split(new [] {'_'},StringSplitOptions.RemoveEmptyEntries);
i = int.Parse(parts[0]);
j = int.Parse(parts[1]);
要添加的一些内容:
TryParse
进行号码检查(部分真的号码?)答案 1 :(得分:1)
除了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();
}
}
这将允许您为每个输入行提供超过2个数字。因此,您可以传递_8_12
或_8_12_13_19_25
或甚至_8
等字符串。