4

可能重复:
是否有更简单的方法可以在 C# 中执行此 if 语句

我有这个代码:

while ((txtSource.Text[startPos].ToString() == " ") || 
       (txtSource.Text[startPos].ToString() == ",") || 
       (txtSource.Text[startPos].ToString() == ".")))
        {
            // do something
        }

有什么办法可以做到以上几点,例如:

while (!txtSource.Text[startPos].ToString() in (" ",",","."))
4

4 回答 4

7
while ((new char[] {' ', ',', '.'}).Contains(txtSource.Text[startPos]))
于 2012-07-06T13:53:59.010 回答
5

LINQAny()寻求帮助:

string text = "some text";
char[] controlChars = { ' ', ',', '.' };
int index = 1;
bool passed = controlChars.Any(c => c == text[index]);
于 2012-07-06T13:52:47.433 回答
4
string[] SearchList =  {" ",",","."};

while (SearchList.Contains(txtSource.Text[startPos].ToString() ))
{
   // Do Something
}
于 2012-07-06T13:53:07.387 回答
4
private static bool IsStopChar(char c)
{
  switch (c)
  {
    case ' ':
    case ',':
    case '.':
      return false;
    default:
      return true;
  }
}

//...

  while (!IsStopChar(txtSource.Text[startPos]))
  {
    //...
  }

使用此解决方案,您可以避免集合迭代、内存分配、初始化……修改案例仍然很容易。

于 2012-07-06T13:56:17.300 回答