使用字符串中的特定字符创建数组

时间:2017-03-10 13:01:59

标签: c# arrays string

所以我想说我有一个字符串:“a = b + c - d”

我想创建一个字符数组来保存这些表达式符号(=, - ,+,)并将它们转换为数组,例如在这种情况下数组将是 { '=', '+', ' - '}

代码示例:

   string s = "a = b + c -d"
   char[] array = s.???('=','-','+');

有一个简单的方法就是没有循环吗?

提前致谢:)

2 个答案:

答案 0 :(得分:4)

您可以使用linq并执行以下操作:

char[] operators = new char[] { '=', '-', '+' };
string s = "a = b + c -d";
var opArray = s.Where(x=>operators.Contains(x)).ToArray();

您可以在operators数组

中添加所需的所有运算符

答案 1 :(得分:2)

您可以使用LINQ选择不是字母或空格的字符

var array = s.Where(c => !Char.IsLetter(c) && !Char.IsWhiteSpace(c)).ToArray();

输出:

[ '=',  '+',  '-' ]

您还可以创建扩展方法以使代码更具可读性,并仅选择数学运算符

public static class Extensions
{
    private static HashSet<char> mathOperators =
        new HashSet<char>(new[] { '+', '-', '=' }); // add more symbols here
    public static bool IsMathOperator(this char c) => mathOperators.Contains(c);
}

使用

var array = s.Where(c => c.IsMathOperator()).ToArray();