我有一个查询,就像我有一个输入
AB_C + ABC_D/ * ABC_DE/ =ABC.AVO
由于我只需要拆分(*,+,=)运算符,其他运算符将采用列表形式。 如何在c#.net
中实现此目标我希望输出
list 1={"AB_C","ABC_D/","ABC_DE/","ABC.AVO"}
list 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;
}