【问题标题】:Get parts of string separated by delimiter获取由分隔符分隔的字符串部分
【发布时间】:2017-12-13 10:01:41
【问题描述】:

我有类似的字符串列表

FDENR8027ROR 0.10-CTW-SI2-2-0-0-A4
FDENR7932ROR-1-0-0-A2 
FDENS3311-4-5-105-A2
FDENS1759-T-6-1-107-A3

输出需要创建为,

FDENR8027ROR 0.10-CTW-SI2, 2, 0 , 0, A4
FDENR7932ROR, 1, 0, 0, A2 
FDENS3311, 4, 5, 105, A2
FDENS1759-T, 6, 1, 107, A3

困难在于,我需要从字符串末尾检查-(连字符),并且只需要分隔最后四个字符串。剩余的文字可以原样使用。

我试过了:

string s = "FDENR8027ROR 0.10-CTW-SI2-2-0-0-A4";
int idx = s.LastIndexOf('-');
Console.WriteLine(s.Substring(0, idx)); //FDENR8027ROR 0.10-CTW-SI2-2-0-0
Console.WriteLine(s.Substring(idx + 1)); //A4

但这是一次,其他三个字符串呢。 :(

怎么做?

【问题讨论】:

  • 使用split 函数并遍历结果数组中的每个部分
  • 我想要FDENR8027ROR 0.10-CTW-SI2这个字符串; split 会将其销毁为FDENR8027ROR 0.10CTWSI2
  • 如果第一位的字符数量始终相同,请先删除这些字符,然后仅对最后一部分起作用 :)
  • Naah Buddy,这是唯一的情况,它可能有也可能没有,但它肯定有最后四个连字符
  • 您可以通过Split - 将前 3 个项目连接到一个字符串。或者获取最后 4 个并将其他的连接成一个。

标签: c# asp.net string substring


【解决方案1】:

这是一种相当简单的方法:

var str = "FDENR8027ROR 0.10-CTW-SI2-2-0-0-A4";
var arr = str.Split('-');
var result = new string[] {
    string.Join("-", arr.Take(arr.Length-4).ToArray()),
    arr[arr.Length-4],
    arr[arr.Length-3],
    arr[arr.Length-2],
    arr[arr.Length-1]
};

【讨论】:

  • 你的答案是有效的,+1,但我有一个这样的字符串列表。并且需要对其应用查询。那么,我怎么能在飞行中做到这一点:(
【解决方案2】:

类似这样的:

string s = "FDENR8027ROR 0.10-CTW-SI2-2-0-0-A4";
string[] parts = s.Split('-');
List<string> result = new List<string>{ string.Join("-", parts.Take(parts.Length - 4)) };
result.AddRange(parts.Skip(parts.Length - 4).Take(4));

查看我的工作fiddle

【讨论】:

  • 我在for 循环中应用了这段代码,遍历列表。按需要工作
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-19
  • 2016-09-05
  • 2014-02-10
  • 2016-07-15
  • 1970-01-01
相关资源
最近更新 更多