根据分频器符号格式化字符串

时间:2018-08-14 06:35:12

标签: c#

我有一个像这样的字符串

4366 | 2d53 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 3f80 | 0 | 4248 | 295f | 41c4 | 19c4 | 0 | 268

在这里, | -表示为分隔线,我要使每个分隔线正好包含4个字符

Ex:0 | 0,必须简化为0000 | 0000     12 | 13,必须将其简化为0012 | 0013

注意:   如果是字符。随附|小于4,然后在字符前面加上零,即12 | 13简化为0012 | 0013,而不是1200 | 1300

结果:

4366 | 2d53 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 3f80 | 0 | 4248 | 295f | 41c4 | 19c4 | 0 | 268

我想将其转换为

4366 | 2d53 | 0000 | 0000 | 0000 | 0000 | 0000 | 0000 | 0000 | 0000 | 0000 | 0000 | 0000 | 0000 | 0000 | 0000 | 0000 | 0000 | 0000 | 0000 | 0000 | 0000 | 0000 | 0000 | 0000 | 3f80 | 0000 | 4248 | 295f | 41c4 | 19c4 | 0000 | 2680

2 个答案:

答案 0 :(得分:1)

可以通过简单的字符串操作Split()PadLeft()Join()来解决

string input = "4366|2d53|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|3f80|0|4248|295f|41c4|19c4|0|268";
string result = string.Join("|",input.Split('|').Select(x => x.PadLeft(4, '0')));

答案 1 :(得分:0)

类似的事情应该起作用:

string.Join("|", myString.Split('|').Select(x => x.PadLeft(4,'0')));

我做了一个小提琴:https://dotnetfiddle.net/uK1kyr