Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从字符串中删除列及其值_C# - Fatal编程技术网

C# 从字符串中删除列及其值

C# 从字符串中删除列及其值,c#,C#,我有三根弦像 string a = "[ERROR] = any thing And [ID] > 20 And [NAME] like Varun"; string b = "[AGE] < 60 Or [ERROR] like Exception And [ID] > 20 And [NAME] like Varun And [ERROR] = any thing "; string c = "[ID] > 20 And`enter code here` [NAME]

我有三根弦像

string a = "[ERROR] = any thing And [ID] > 20 And [NAME] like Varun";
string b = "[AGE] < 60 Or [ERROR] like Exception And [ID] > 20 And [NAME] like Varun And [ERROR] = any thing ";
string c = "[ID] > 20 And`enter code here` [NAME] like Varun And [ERROR] = any thing";
string a=“[ERROR]=anything和[ID]>20和[NAME]like Varun”;
字符串b=“[AGE]<60或[ERROR]类似异常且[ID]>20和[NAME]类似Varun和[ERROR]=任何事物”;
字符串c=“[ID]>20和`在此处输入代码`[NAME]如Varun和[ERROR]=anything”;
我想删除从[ERROR]开始到下一个运算符(如和/或….)的字符串

我想要像这样的答案

string a = "[ID] > 20 And [NAME] like Varun";
string b = "[AGE] < 60 And [ID] > 20 And [NAME] like Varun";
string c = "[ID] > 20 And [NAME] like Varun";
string a=“[ID]>20和[NAME]like Varun”;
字符串b=“[AGE]<60且[ID]>20且[NAME]像瓦伦”;
字符串c=“[ID]>20和[NAME]像Varun”;

如何删除…?

如果您不熟悉正则表达式(我假设您不熟悉),可以使用以下伪代码:

  • 将字符串拆分为单词(用空格分隔)

  • 扫描单词列表,如果它等于
    [ERROR]
    ,则跳过所有单词,直到下一个单词以
    [
    开始,以
    ]
    结束

  • 如果单词以
    [
    开头,以
    ]
    结尾,则将其添加到输出中,并添加以下所有不以
    [
    开头,以
    ]
    结尾的单词

    public static String FilterString(string value)
    {
      string[] lsWords = value.Split(' ');
      StringBuilder lsbBuilder = new StringBuilder();
    
      bool lbIncluding = true;
    
      foreach(String lsWord in lsWords)
      {
        if (lsWord.StartsWith("[") && lsWord.EndsWith("]"))
           lbIncluding = (lsWord != "[ERROR]");
    
        if (lbIncluding)
        {
          if (lsbBuilder.Length > 0) lsbBuilder.Append(' ');
          lsbBuilder.Append(lsWord);
        }
      }
    
      return lsbBuilder.ToString();
    }
    

    string a=“[ERROR]=anything和[ID]>20和[NAME]like Varun”;
    字符串b=“[AGE]<60或[ERROR]类似异常且[ID]>20和[NAME]类似Varun和[ERROR]=任何事物”;
    字符串c=“[ID]>20和`在此处输入代码`[NAME]如Varun和[ERROR]=anything”;
    a=过滤器串(a);
    b=过滤器串(b);
    c=过滤器串(c);
    
  • 以下是输出:

    [ID] > 20 And [NAME] like Varun
    [AGE] < 60 Or [ID] > 20 And [NAME] like Varun And
    [ID] > 20 And`enter code here` [NAME] like Varun And
    
    [ID]>20和[NAME]像瓦伦一样
    [年龄]<60岁或[身份证]>20岁和[姓名]像瓦伦和
    [ID]>20和“在此处输入代码”[NAME]如Varun和
    

    这并不能摆脱and/OR等等,你需要自己去做,但这应该给你一个很好的起点。

    如何:使用正则表达式搜索字符串(C#编程指南)你已经尝试过什么?你可以使用正则表达式和字符串操作函数。
    [ID] > 20 And [NAME] like Varun
    [AGE] < 60 Or [ID] > 20 And [NAME] like Varun And
    [ID] > 20 And`enter code here` [NAME] like Varun And