代码之家  ›  专栏  ›  技术社区  ›  Thorin Oakenshield

字符串格式:删除最后一个下划线和以下字符

  •  2
  • Thorin Oakenshield  · 技术社区  · 14 年前

    我有一个字符串列表

     A_1
     A_2
     A_B_1
     X_a_Z_14
    

    我需要删除最后一个下划线和以下字符。

    所以结果列表如下

    A
    A
    A_B
    X_a_Z
    
    6 回复  |  直到 8 年前
        1
  •  11
  •   Ioannis Karadimas    14 年前
    var data = new List<string> {"A_1", "A_2", "A_B_1", "X_a_Z_14"};
    
    int trimPosition;
    for (var i = 0; i < data.Count; i++)
             if ((trimPosition = data[i].LastIndexOf('_')) > -1)
                data[i] = data[i].Substring(0, trimPosition);
    
        2
  •  6
  •   Ahmed Aman    14 年前
    string[] names = {"A_1","A_2","A_B_1","X_a_Z_14" };
    for (int i = 0; i < names.Length;i++ )
       names[i]= names[i].Substring(0, names[i].LastIndexOf('_'));
    
        3
  •  3
  •   Winston Smith    14 年前
    var s = "X_a_Z_14";
    var result = s.Substring(0, s.LastIndexOf('_') ); // X_a_Z
    
        4
  •  3
  •   Cipi    14 年前
    string s = "X_a_Z_14";
    
    s = s.Substring(0, s.LastIndexOf("_"));
    
        5
  •  2
  •   Winston Smith    14 年前
    input.Substring(0,input.LastIndexOf("_"));
    
        6
  •  2
  •   executor    14 年前

    如果您愿意,也可以使用正则表达式。

    Regex regex = new Regex("_[^_]*$");
    string[] strings = new string[] {"A_1", "A_2", "A_B_1", "X_a_Z_14"};
    foreach (string s in strings)
    {
        Console.WriteLine(regex.Replace(s, ""));
    }