【问题标题】:Check if characters are part of a String检查字符是否是字符串的一部分
【发布时间】:2015-03-26 13:12:41
【问题描述】:

我想检查一组字符是否属于字符串变量的一部分, 理想情况下,我会执行以下操作之一,

  1. 将字符存储在一个列表中并循环遍历每个字符以检查它们是否存在于字符串中。
  2. 在字符集较小的情况下,使用 OR 操作形成一个简单的 if 语句。

有没有更好的方法来做到这一点,可能是使用 LINQ。

例如,我想检查是否有任何字符 '>' 或 ' b and b != 10' 的一部分。

【问题讨论】:

  • .IndexOf 方法将完成您的工作。
  • .Contains 也应该可以工作。
  • 更好地定义您的问题。您是否需要知道><= 中的any 是否在您的字符串中?还是全部?你需要知道哪些。你试过什么了?你说的高效是什么意思?快点?更少的内存密集型?更少的代码行?您做了哪些分析表明您目前拥有的内容不够高效?
  • 我想检查字符串变量中是否存在任何字符 '>'、'

标签: c# .net vb.net string linq


【解决方案1】:

你可以使用Intersect + Any:

bool contains = stringVariable.Intersect("><=").Any();

【讨论】:

    【解决方案2】:

    应该不会太难:

    var content = "a<b";
    
    var isContained = content.Any(c => c == '<')
    

    ..或字符列表:

    var charList = new []{'<', '>'};
    var isAnyContained = content.Any(c => charList.Contains(c));
    

    【讨论】:

      【解决方案3】:

      你可以使用String.IndexOfAny方法:

      string myString = "a > b and b != 10";
      if (myString.IndexOfAny(new char[] { '<', '>', '=' }) >= 0)
          {
          // ...
          }
      

      或者

      Dim myString As String = "a > b and b != 10"
      If myString.IndexOfAny({">"c, ">"c, "="c}) >= 0 Then
          ' ...
      End If
      

      【讨论】:

        猜你喜欢
        • 2022-01-15
        • 2014-06-21
        • 1970-01-01
        • 2021-05-17
        • 2016-05-08
        • 2019-07-19
        • 1970-01-01
        • 2019-05-11
        相关资源
        最近更新 更多