首页 > 解决方案 > 使用循环概念从字符串中拆分运算符

问题描述

我有一个查询,就像我有一个输入一样

AB_C + ABC_D/ * ABC_DE/ =ABC.AVO

因为我只需要拆分 (*,+,=) 运算符,其他运算符将采用列表形式。我怎样才能在 c#.net 中实现这一点

我期待输出

list 1={"AB_C","ABC_D/","ABC_DE/","ABC.AVO"} list 2={"+","*","="}

标签: c#

解决方案


第一个列表可以使用 String.Split() 来实现。第二个列表可以通过遍历输入并查看每个字符来实现:

    static void Main(string[] args)
    {
        string input = "AB_C + ABC_D/ * ABC_DE/ =ABC.AVO";

        string operators = "*+=";
        List<string> list1 = new List<string>(input.Split(operators.ToArray(), StringSplitOptions.RemoveEmptyEntries));
        for(int i =0; i<list1.Count; i++)
        {
            list1[i] = list1[i].Trim();
        }
        List<string> list2 = new List<string>();
        for(int i = 0; i < input.Length; i++)
        {
            if(operators.Contains(input.Substring(i,1)))
            {
                list2.Add(input.Substring(i, 1));
            }
        }

        Console.WriteLine("list1 = " + String.Join(",", list1.ToArray()));
        Console.WriteLine("list2 = " + String.Join(",", list2.ToArray()));

        Console.ReadLine();
    }

请注意,这不会告诉您输入是否有效。例如,可能有两个相邻的运算符,或者在一个运算符之后没有值,等等......


推荐阅读