遍历一个字符串并检查是否包含一个字符并将之前的字符保存在列表中

Go through a string and check if contains a char and save the chars before in a list

我想遍历一个字符串,并检查字符串中是否有可用的字符。 例如: 我的字符串是:string test = "100+20+3-17+2" 所以现在我检查我的字符串并检查字符:

List<string> numbers= new List<string>();
foreach( char c in test)
{
   if (c =='+'|| c =='-'||c =='/'||c =='*')
   {
     //Now here i want to save all chars before '+' '-'  '/'  '*' in my list numbers. in this example: save 100, 20,3,17,2 in my list
   }
}

你会怎么做?

使用String.Split(Char[])得到拆分后的字符串数组

只需用字符拆分您的字符串

List<string> numbers = new List<string>();
string test = "100+20+3-17+2";
char[] chars = new char[] { '+', '-', '*', '/' };
numbers = test.Split(chars).ToList();

我会选择 StringBuilder。当您通过原始字符串检查字符时,将它们添加到 StringBuilder。当您找到拆分器字符时,在列表中添加 StringBuilder.ToString 并清空 StringBuilder。

代码应如下所示(尚未测试):

List<string> numbers= new List<string>();
StringBuilder sb = new StringBuilder();

foreach( char c in test)
{
    if (c =='+'|| c =='-'||c =='/'||c =='*')
    {
        //Now here i want to save all chars before '+' '-'  '/'  '*' in my list numbers. in this example: save 100, 20,3,17,2 in my list

        numbers.Add(sb.ToString());
        sb.Clear();
    }
    else
    {
        sb.Append(c);
    }
}

如果字符不在'+'、'-'、'/'、'*'中,您可以拼接字符串中的字符。当运算符出现时,您可以将字符串添加到列表中,并空字符串

List<string> numbers= new List<string>();
string curNumber="";
foreach( char c in test)
{
   if (c =='+'|| c =='-'||c =='/'||c =='*')
   {
     numbers.Add(curNumber);
     curNumber="";
   }
   else
   {
     //also you can add operators in other list here
     curNumber+=c.ToString();
   }
}
numbers.Add(curNumber);