首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >c# pad左转到字符串

c# pad左转到字符串
EN

Stack Overflow用户
提问于 2010-12-14 03:33:41
回答 2查看 10.3K关注 0票数 7

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

我有一个类似如下的字符串:

代码语言:javascript
复制
'1,2,5,11,33'

我只想对10以下的数字补零(有一位数)

所以我想要得到

代码语言:javascript
复制
'01,02,05,11,33'

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-12-14 03:36:12

你到底有多关心效率?就个人而言,我会使用:

代码语言:javascript
复制
string padded = string.Join(",", original.Split(',')
                                         .Select(x => x.PadLeft(2, '0')));

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

这肯定不是最有效的解决方案,但这是我会使用的,直到我证明它不够有效。这里有一个替代方案..。

代码语言:javascript
复制
// 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();
}

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

票数 21
EN

Stack Overflow用户

发布于 2010-12-14 03:36:55

代码语言:javascript
复制
string input= "1,2,3,11,33";
string[] split = string.Split(input);
List<string> outputList = new List<string>();
foreach(var s in split)
{
    outputList.Add(s.PadLeft(2, '0'));
}

string output = string.Join(outputList.ToArray(), ',');
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4432734

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档