【问题标题】:Extract text from string between commas从逗号之间的字符串中提取文本
【发布时间】:2015-05-21 06:13:17
【问题描述】:

我只想提取两个逗号之间的那些词。 所以,如果字符串是 Ab Java, DE, 78801 答案一定是 DE 我已经尝试过这段代码,但它不起作用

string search = "Ab  Java, DE, 78801 ";
int index = search.IndexOf(",");
string result = search.Substring(search.IndexOf(",") ,index);
MessageBox.Show(result);

【问题讨论】:

  • 你的字符串有 always 两个逗号?
  • 是的,它总是有两个逗号

标签: c#


【解决方案1】:

如果您的字符串有 always 2 个逗号,您可以使用 String.Split 来表示;

string search = "Ab  Java, DE, 78801 ";
Console.WriteLine(search.Split(',')[1]); // DE

请记住,这将生成DE,并在其前面有一个额外的空格。

如果您不想要那个空白,可以使用TrimStart() 将其删除。

Console.WriteLine(search.Split(',')[1].TrimStart()); //DE

【讨论】:

  • 这是什么Dump() 方法?
  • @Shaharyar 是LINQPad的扩展方法。 stackoverflow.com/questions/2699466/… 我使用这个工具生成了一些代码示例,但看起来有时可能会令人困惑。删了。
  • @SonerGönül 感谢您的解释。我认为downvoter也不知道这种方法:)
  • @Downvoter 至少愿意发表评论,这样我才能看到我可能哪里错了?
【解决方案2】:

您的子字符串中的开始和结束解析为相同的值。

尝试使用 split 并获取第二项,当然这假设您的输入始终遵循示例中的模式。否则你需要做一些更复杂的事情。

string[] searchItems = search.Split(',');
string result = searchItems[1].Trim(); // will output DE

【讨论】:

    【解决方案3】:

    试试这个

    string[] splitedStr=search.Split(',');
    string NewStr=splitedStr[1].ToString();
    

    【讨论】:

      【解决方案4】:

      假设你的字符串总是只有两个逗号,那么:

      search.Split(", ")[1]
      

      会给你想要的文字。

      【讨论】:

        【解决方案5】:

        试试这个...

        String str = "Ab  Java, DE, 78801 ";
        String[] myStrings = str.split(",");
        String marco = myStrings[1];
        

        【讨论】:

          【解决方案6】:

          试试这个。它可以工作......

          string[] arrayStr = search.Split(',');
          int len = arrayStr.Length;
          for(int i =1;i<=len-2;i++)
          {
             MessageBox.Show(result);
          }
          

          【讨论】:

            【解决方案7】:

            这是我可以使用正则表达式解决的问题。它可能比String.Split 解决方案要慢,但它更容易阅读 - 特别是如果模式会随着时间的推移而演变。

            解决方案应该是这样的:

            string search = "Ab  Java, DE, 78801 ";
            Regex r = new Regex(", *(.*) *,", RegexOptions.Compiled);
            Console.WriteLine(r.Match(search).Groups[1].ToString());
            

            这写DE 没有周围的空格。正则表达式实例应该是你的类的静态成员,因为我假设这是在循环中发生的......

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2017-11-10
              • 2011-01-05
              • 2020-03-18
              • 2016-04-07
              • 1970-01-01
              • 2019-12-13
              相关资源
              最近更新 更多