【问题标题】:How to remove a defined part of a string?如何删除字符串的定义部分?
【发布时间】:2011-03-15 13:12:35
【问题描述】:

我有这个字符串:“NT-DOM-NV\MTA” 如何删除第一部分:“NT-DOM-NV\” 将其作为结果:“MTA”

RegEx 怎么可能?

【问题讨论】:

    标签: c# asp.net regex string


    【解决方案1】:

    您可以使用以下代码:

    str = str.Substring (10); // to remove the first 10 characters.
    str = str.Remove (0, 10); // to remove the first 10 characters
    str = str.Replace ("NT-DOM-NV\\", ""); // to replace the specific text with blank
    
    //  to delete anything before \
    
    int i = str.IndexOf('\\');
    if (i >= 0) str = str.SubString(i+1);
    

    【讨论】:

    • 我认为关键是它可以处理几个不同的字符串,所以他有两个字符串,并且想要从另一个中删除一个。
    • @Tassisto,我相信我有足够多的例子来满足你的需要。如果他们都没有解决手头的问题,请再次解释您需要什么。希望我对您有所帮助。
    【解决方案2】:
    string.TrimStart(what_to_cut); // Will remove the what_to_cut from the string as long as the string starts with it.  
    

    "asdasdfghj".TrimStart("asd" ); 将产生"fghj"
    "qwertyuiop".TrimStart("qwerty"); 将产生"uiop"


    public static System.String CutStart(this System.String s, System.String what)
    {
        if (s.StartsWith(what))
            return s.Substring(what.Length);
        else
            return s;
    }
    

    "asdasdfghj".CutStart("asd" ); 现在将产生"asdfghj"
    "qwertyuiop".CutStart("qwerty"); 仍将产生"uiop"

    【讨论】:

    • 有线问题。我想很多开发者都不知道这一点。无论如何,这是一个非常好的和明确的解决方案,我将我们应用程序中的 ALL TrimStart 替换为您的 CutStart 方法。谢谢。
    【解决方案3】:

    鉴于“\”总是出现在字符串中

    var s = @"NT-DOM-NV\MTA";
    var r = s.Substring(s.IndexOf(@"\") + 1);
    // r now contains "MTA"
    

    【讨论】:

    • 这正是我所需要的!谢谢。
    • 如果字符串是 @"NT-DOM-NV\MTA\ABC\file" 并且拆分后 NT-DOM-NV ,我需要拆分后的第一个字符串。在这种情况下,它应该是MTA。如果我必须拆分NT-DOM-NV\MTA,那么它应该返回ABC。 TIA
    • 问题的目的是从另一个字符串的开头搜索并删除一个字符串。使用您的方法,您无法动态识别字符串的位置并将其删除。
    • @zambee 问题的目的是获取 \ 字符之后的内容,这在我的回答中得到了解决。
    • @Mikael Östberg 好的。谢谢。
    【解决方案4】:

    如果总是只有一个反斜杠,请使用:

    string result = yourString.Split('\\').Skip(1).FirstOrDefault();
    

    如果可以有多个,而您只想拥有最后一部分,请使用:

    string result = yourString.SubString(yourString.LastIndexOf('\\') + 1);
    

    【讨论】:

      【解决方案5】:

      试试

      string string1 = @"NT-DOM-NV\MTA";
      string string2 = @"NT-DOM-NV\";
      
      string result = string1.Replace( string2, "" );
      

      【讨论】:

      • 字符串结果 = string1.Replace(string2, string.Empty);
      【解决方案6】:

      你可以使用这个扩展方法:

      public static String RemoveStart(this string s, string text)
      {
          return s.Substring(s.IndexOf(s) + text.Length, s.Length - text.Length);
      }
      

      在您的情况下,您可以按如下方式使用它:

      string source = "NT-DOM-NV\MTA";
      string result = source.RemoveStart("NT-DOM-NV\"); // result = "MTA"
      

      注意:不要不要使用TrimStart 方法,因为它可能会进一步修剪一个或多个字符 (see here)。

      【讨论】:

        【解决方案7】:
         string s = @"NT-DOM-NV\MTA";
         s = s.Substring(10,3);
        

        【讨论】:

        • -1:他从未指定任何一个部分都是固定长度的。
        • @Daniel:说句公道话,他并没有具体说明什么......也可能没有“\”
        • @paolo:你是对的。但是,这些字符串中的任何一个都是固定长度的假设在 30 年前可能是正确的,但现在不是。
        • 他给出了准确的字符串以及想要的结果……不知道有什么大不了的
        【解决方案8】:
        Regex.Replace(@"NT-DOM-NV\MTA", @"(?:[^\\]+\\)?([^\\]+)", "$1")
        

        试试here

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-11-17
          • 1970-01-01
          • 2014-07-03
          • 1970-01-01
          • 1970-01-01
          • 2017-07-02
          相关资源
          最近更新 更多