Linq vs Regex拆分并修改字符串

时间:2016-12-25 02:21:42

标签: c#

我有一个字符串。它看起来像:

data =“DA00VB0012004500890044010000000700000004000000 010000001 0000”;

data =“DA00NM0012002700890032010000000700000004000000 1A000001A 0000”;

我需要拆分并修改该字符串。
这是我的代码:

public string Getstring(string value, int start = 47, int end = 54)
{
    string spstart = string.Empty;
    string spend = string.Empty;
    start = start - 1;
    end = end + 1;
    if (value != string.Empty)
    {
        var mem = value.Substring(start, end - start);
        spstart = mem.Substring(0, 2);
        spend = mem.Substring(mem.Length - 2, 2);
    }
    if(spstart.Trim().Equals(spend.Trim())
    {
        return mem;
    }
    return "not found";
}

这是我得到的结果:
为第一个字符串

01 00000的 01
第二个

1A 00000的 1A
您可以看到相同的开头和结尾:01 01或1A 1A。

我想得到的最终结果:

01 00000 01 - >的 0C 00000的 0C

1A 00000 1A - >的 0C 00000的 0C

data =“DA00VB0012004500890044010000000700000004000000 0C 00000 0C 0000”;

我想替换字符串的开头和结尾。 然后用 0C 00000替换字符串中的 01 00000 01 1A 00000 1A 0C

我正在寻找一种更短的方式来获取Getstring并得到我想要的东西。 我正在看看Linq和Regex.Again。 我仔细阅读了他们。 我不会删除这个话题。如果有任何解决的想法,我会投票。 感谢所有的帮助。

1 个答案:

答案 0 :(得分:1)

在你的评论中我不确定你的意思我有多少种方式 ???下面是你如何更换你描述的字符串。因为你的问题是一个非常简单的字符串替换问题,所以给每个人一个你想要完成的事情的一般理想可能会更好。替换下面显示的字符串。

  String s1 = "010000001";
  String s2 = "1A000001A";

  String s3 = s1.Replace("01", "0C");
  String s4 = s2.Replace("1A", "15");

  Console.WriteLine(s1 + " -> " + s3 + "\n\r" + s2 + " -> " + s4);
  Console.ReadKey();