【问题标题】:Splitting and Trimming to Extract Value拆分和修剪以提取值
【发布时间】:2015-05-13 03:20:30
【问题描述】:

在我的程序中,我读取了流发送的一行,并将其存储在一个名为 result 的变量中。

结果可能是“GET /data”。我想从中提取“数据”。

我用空格进行分割,它存储在一个数组字符串中,所以之后我得到了可变部分: 得到 /数据

但现在我只想修剪数据前面的“/”。我试过“trimstart”但没有奏效。有什么建议吗?

string[] delimiters = new string[] { " ", "\r\n"};
string[] lineParts = result.Split(delimiters, StringSplitOptions.RemoveEmptyEntries);
result.TrimStart('/');

【问题讨论】:

标签: c# split trim


【解决方案1】:

这将在 lineParts 中的每个字符串上修剪 /

string result = "GET /DATA";
string[] delimiters = new string[] { " ", "\r\n" };
string[] lineParts = result.Split(delimiters, StringSplitOptions.RemoveEmptyEntries); // contains {"GET", "/DATA"}
string[] newLineParts = lineParts.Select(o=>o.TrimStart('/')).ToArray(); // contains {"GET" , "DATA"}

【讨论】:

    【解决方案2】:

    您可以使用拆分功能来提取数据。

    string[] rslt = result.Split('/');
    string data = rslt[1].ToString();
    

    此数据将包含提取的数据。

    demo

    【讨论】:

      【解决方案3】:

      像所有字符串方法一样,TrimStart 返回一个新的字符串对象,它不会改变原来的对象。它不能因为字符串在.NET 中是immutable types。您无法更改它们。

      这就是为什么您需要将返回的对象重新分配给相同或不同的字符串。

      lineParts[1] = lineParts[1].TrimStart('/');
      

      这里是 demonstration

      【讨论】:

      • 我认为在这种情况下,我正在尝试修剪数组 lineParts。 index[1] 包含“/data”,我将如何继续从数组中修剪“/”?
      • @mca-surround 你可以这样做; lineParts[1] = lineParts[1].TrimStart('/');
      猜你喜欢
      • 1970-01-01
      • 2018-02-06
      • 1970-01-01
      • 2019-01-31
      • 2019-01-16
      • 1970-01-01
      • 1970-01-01
      • 2016-06-11
      • 1970-01-01
      相关资源
      最近更新 更多