【问题标题】:Remove a substring from String [closed]从字符串中删除子字符串 [关闭]
【发布时间】:2016-11-15 10:46:55
【问题描述】:

有没有办法根据任何标识符从我的字符串中删除子字符串?

例如,我有:

string codeID = "347439>Dome";

我只想拥有出现在> 之前的那部分字符串

结果应该是这样的:

string newCodeId = "347439"

有可能吗?

【问题讨论】:

  • 你有没有尝试过?也许看看 IndexOf & Substring 方法的文档
  • 是的,拆分并获取第一项,或者获取直到第一次出现> 的子字符串(使用IndexOf(">"))。

标签: c# string substring


【解决方案1】:

这可能是另一种可能性:

string codeID = "347439>Dome";

string newCodeId = codeID.Split('>')[0];

Console.WriteLine(newCodeId);

它使用返回string[]String.Split() 方法。为了得到string 的左边部分,我取了数组中的第一个元素。字符串的其余部分(在这种情况下)位于1 位置。

如果字符串中没有> 分隔符。它将只返回位置[0]的整个旧字符串

【讨论】:

    【解决方案2】:

    你可以使用Split()方法:

    string codeID = "347439>Dome";
    string result = codeID.Split('>')[0];
    

    【讨论】:

    • 快 20 秒! ;) 第一章
    【解决方案3】:

    您也可以使用 System.Linq:

    string result = codeID.Split('>').First();
    

    【讨论】:

      【解决方案4】:

      我同意 Fubo 的回答,但您也可以使用 string.split() 函数拆分字符串。并且可以取第一个索引值。

      string codeID = "347439>Dome";
      string result = codeID.Split('>')[0];
      

      【讨论】:

        【解决方案5】:

        方法:子字符串()

        string codeID = "347439>Dome";
        char splitChar = '>';
        if (codeID.Contains(splitChar))
        {
         int charIndex = codeID.IndexOf(splitChar);
         string subString = codeID.Substring(0,charIndex);
        }
        

        【讨论】:

          【解决方案6】:

          这应该替换您的“>”之后的所有内容

          var newCodeId = Regex.Replace(codeID , "[>].*", string.Empty, RegexOptions.IgnoreCase)
          

          【讨论】:

          • 使用正则表达式解决这个问题就像用大锤打开核桃
          • 他没有具体说明他想怎么做。我知道不是每个人都喜欢正则表达式,在这种情况下我觉得它更简单。
          • 更多的是效率低下。 RegEx 引擎在 C# 中并不是特别有效。与Substring() 相比,这将产生很大的开销。就像在这种情况下不是一个大问题,但我个人通常只会使用正则表达式作为最后的手段。
          猜你喜欢
          • 2021-03-17
          • 2019-09-08
          • 1970-01-01
          • 1970-01-01
          • 2015-10-04
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多