将破折号插入字符串

时间:2018-04-13 14:50:56

标签: c# winforms

我想知道如何将虚线插入字符串中的各个点? 我有一个长度为32个字符的字符串 我需要在各个地方破折号 8-4-4-4-12

8个字符 - 4个字符......依此类推,直到字符串完成。

我尝试了REGEX,但只能定期添加破折号

 string newString = Regex.Replace(currentEPC, ".{6}", "$0-");

我正在尝试将字符串解析为Guid,但我的字符串不包含破折号,需要将其转换为Guid。

2 个答案:

答案 0 :(得分:3)

  

我正在尝试将字符串解析为Guid,但我的字符串不包含破折号,需要将其转换为Guid。

不,它没有:

Guid g = Guid.Parse("084c1bfd133d403384e1c02113b52f8c");

这将为您解析GUID。如果你想用带破折号的字符串表示:

string s = g.ToString();

答案 1 :(得分:2)

正如Patrick所示,您不需要插入破折号来将字符串解析为Guid

但是,如果你需要这种方法,你可以使用:

public static string InsertStrings(string text, string insertString, params int[] rangeLengths)
{
    var sb = new StringBuilder(text);
    var indexes = new int[rangeLengths.Length];
    for (int i = 0; i < indexes.Length; i++)
        indexes[i] = rangeLengths[i] + indexes.ElementAtOrDefault(i-1) + insertString.Length;

    for (int i = 0; i < indexes.Length; i++)
    {
        if(indexes[i] < sb.Length)
            sb.Insert(indexes[i], insertString);
    }

    return sb.ToString();
}

用法:

string guidString = "36b1dbc650c6407098247f87790144ff";
guidString =  InsertStrings(guidString, "-", 8, 4, 4, 4, 12);