从字符串中分隔整数值

时间:2014-05-19 18:42:49

标签: c#

假设我有如下字符串:

  1. _4_5
  2. _15_16
  3. 现在我希望它们分开并获取像

    这样的变量中的值
    1. i=4, j=5
    2. i=15, j=16
    3. 怎么做?

2 个答案:

答案 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的答案之外,如果您将拥有未知数量的变量(换句话说,不只是ij),您可以使用此方法:

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等字符串。