c# pad left 到字符串

标签 c# string pad

我想找到一种有效的方法:

我有一个像这样的字符串:

'1,2,5,11,33'

我只想对小于 10(只有一位)的数字补零

所以我想得到

'01,02,05,11,33'

谢谢

最佳答案

真正有多关心效率?我个人会使用:

string padded = string.Join(",", original.Split(',')
                                         .Select(x => x.PadLeft(2, '0')));

(正如评论中所指出的,如果您使用的是 .NET 3.5,则需要在 Select 之后调用 ToArray。)

这绝对不是最有效 的解决方案,但在我证明它不够有效之前,我会一直使用它。这是一个替代方案...

// Make more general if you want, with parameters for the separator, length etc
public static string PadCommaSeparated(string text)
{
    StringBuilder builder = new StringBuilder();
    int start = 0;
    int nextComma = text.IndexOf(',');
    while (nextComma >= 0)
    {
        int itemLength = nextComma - start;
        switch (itemLength)
        {
            case 0:
                builder.Append("00,");
                break;
            case 1:
                builder.Append("0");
                goto default;
            default:
                builder.Append(text, start, itemLength);
                builder.Append(",");
                break;
        }
        start = nextComma + 1;
        nextComma = text.IndexOf(',', start);
    }
    // Now deal with the end...
    int finalItemLength = text.Length - start;
    switch (finalItemLength)
    {
        case 0:
            builder.Append("00");
            break;
        case 1:
            builder.Append("0");
            goto default;
        default:
            builder.Append(text, start, finalItemLength);
            break;
    }
    return builder.ToString();
}

这是可怕的代码,但我认为它会做你想做的...

关于c# pad left 到字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4432734/

相关文章:

c# - 我应该在 string.Replace() 之前使用 string.Contains() 吗?

c# - 快速排序算法抛出stackoverflow异常错误

r - 截断字符串(不截断单词)

python - numpy pad 是如何实现的(对于常量值)

java - 在二进制字符串的左侧添加零 - Java

c# - 使用 Expression.Dynamic 为值类型生成转换器

c# - 获得更高的使用位位置

c - C 中 char[] 和 char* 的区别

java - 字符串修剪异常

java - AS3有类似Java的NumberFormat的类吗