使用循环概念从字符串中拆分运算符

时间:2019-03-25 04:35:29

标签: c#

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

AB_C + ABC_D/ * ABC_DE/ =ABC.AVO

由于我只需要拆分(*,+,=)运算符,其他运算符将采用列表形式。 如何在c#.net

中实现此目标

我希望输出

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

2 个答案:

答案 0 :(得分:0)

第一个列表可以使用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();
    }

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

答案 1 :(得分:0)

string s ="AB_C + ABC_D/ * ABC_DE/ =ABC.AVO";

    string[] chars = {};
    string[] op = {};
    string l="";
    int idx=0;
    int it=0;
    for(int i=0;i<s.length;i++)
    {
        if(s[i]='+' || s[i] == '=' || s[i] =='/' || s[i] =='*')
        {
            if(l.length>=1)
            {
                chars[++idx] = l;
                l = ""; 
            }
            op[it] = s[i];
        }
        else
        {
            l = l + s[i]; 
        }
    }
    if(l.length>=1)
    {
        chars[++idx] = l;
    }