我有字符串"00264A7BC"
,我想将其显示为"00 264 A7 BC"
。
所以,2个字母+空格+3个字母+空格+2个字母+空格+2个字母。
我正在尝试ToString
,但似乎没有这样的选择。
我该怎么做?
答案 0 :(得分:5)
如果格式严格,您可以使用String.Substring
和String.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++];