【问题标题】:Remove everything after the pipe删除管道后的所有内容
【发布时间】:2014-05-06 13:36:13
【问题描述】:

我正在尝试删除管道之后的所有内容,但我的代码当前正在做的是相反的,它正在删除管道之前的所有内容。我想删除管道后的所有内容,包括是否有空格。这是我尝试过的代码:

DropDownList WPC1 = DV_InputForm.FindControl("ddl_WPC") as DropDownList;
string WPC_Selected = WPC1.SelectedValue;
string WPC = WPC_Selected.Substring(WPC_Selected.LastIndexOf("|") + 1);

【问题讨论】:

  • Substring 从哪里开始获取索引,而不是截断什么。您要传入两个参数:0 开始,然后是管道字符的索引。
  • string WPC = WPC_Selected.Substring(0,WPC_Selected.LastIndexOf("|"));
  • 字符串 WPC = WPC_Selected.Substring(WPC_Selected.IndexOf("|")+1, (WPC_Selected.Length - WPC_Selected.IndexOf("|")-1));

标签: c# asp.net


【解决方案1】:

如果你想从一个字符串中删除一个子字符串,你应该使用String.Remove,它增加了可读性,因为你的意图更清晰:

string WPC = WPC_Selected.Remove(WPC_Selected.LastIndexOf("|") + 1);

如果里面没有管道,这将返回一个空字符串。如果你想在这种情况下获取完整的字符串,你必须先检查LastIndexOf("|") >= 0

【讨论】:

    【解决方案2】:

    你必须从0索引开始移动到管道符号的索引处。

    MSDN Reference 的子字符串方法。

    string WPC_Selected = "abc|def";
    string WPC = WPC_Selected.Substring(0, WPC_Selected.LastIndexOf("|")); //abc
    string WPC1 = WPC_Selected.Substring(0, WPC_Selected.LastIndexOf("|") + 1); //abc| 
    

    【讨论】:

      【解决方案3】:

      请试一试

      DropDownList WPC1 = DV_InputForm.FindControl("ddl_WPC") as DropDownList;
      string WPC_Selected = WPC1.SelectedValue;
      string WPC = WPC_Selected.Split("|").Lenght>0?WPC_Selected.Split("|")[0].Trim():string.Empty;
      

      【讨论】:

      • 如果第一部分有管道怎么办?
      【解决方案4】:

      只有一行:

      string WPC = WPC_Selected.Substring(WPC_Selected.IndexOf("|")+1, (WPC_Selected.Length - WPC_Selected.IndexOf("|")-1));
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-12-31
        • 1970-01-01
        • 2019-01-24
        • 2012-10-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多