将字符串“00264A7BC”显示为“00 264 A7 BC”

时间:2013-12-10 22:26:44

标签: c#

我有字符串"00264A7BC",我想将其显示为"00 264 A7 BC"

所以,2个字母+空格+3个字母+空格+2个字母+空格+2个字母。

我正在尝试ToString,但似乎没有这样的选择。

我该怎么做?

4 个答案:

答案 0 :(得分:5)

如果格式严格,您可以使用String.SubstringString.Format(为了便于阅读):

string result = string.Format("{0} {1} {2} {3}"
                             , str.Substring(0, 2)
                             , str.Substring(2, 3)
                             , str.Substring(5, 2)
                             , str.Substring(7));

如果你想要一种神秘但安全的LINQ方法:

var whiteSpaces = new HashSet<int>{ 2, 5, 7};
result = string.Join("", str
    .Select((c, i) => whiteSpaces.Contains(i) ? " " + c : c.ToString()));

答案 1 :(得分:2)

您可以使用正则表达式:

var output = Regex.Replace(input, @"(\w\w)(\w\w\w)(\w\w)(\w\w)", "$1 $2 $3 $4");

答案 2 :(得分:1)

你可以这样做......

string newString = string.Format("{0} {1} {2} {3}",
    new string(originalString.Take(2).ToArray()),
    new string(originalString.Skip(2).Take(3).ToArray()),
    new string(originalString.Skip(5).Take(2).ToArray()),
    new string(originalString.Skip(7).Take(2).ToArray()));

编辑:修改了正确的语法。

答案 3 :(得分:0)

我原本以为明智地使用字符串拼接是前进的方向:即不要试图聪明。甚至可能只是简单地说:

int i=0, j=0;
str[i++] = orig[j++];
str[i++] = orig[j++];
str[i++] = ' ';
str[i++] = orig[j++];
str[i++] = orig[j++];
str[i++] = orig[j++];
str[i++] = ' ';
str[i++] = orig[j++];
str[i++] = orig[j++];
str[i++] = ' ';
str[i++] = orig[j++];
str[i++] = orig[j++];