1

我必须进行以下类型的转换,其中我的源字符串可以有一个或两个句点,并且每个数字都由两位数表示。所以“1”变成“01”,“90”变成“90”。这是之前 -> 之后的示例

0.0 -> 0000
1.1 -> 0101
10.10 -> 1010
1.88 -> 0188
1.11.22 -> 011122
33.44.5 -> 334405

我有以下功能,但它确实适用于不同的组合。谁能建议我如何使它适用于我的输入中有1 或 2 个句点的情况:

    public string DotFormatToRowKey(string tempRowKey) {
        return string.Join("", from s in id.Split('.')
                               select s.PadLeft(2, '0')).PadRight(4, '0'));
    }
4

2 回答 2

2

我想你只需要PadLeft(2,'0')一部分

Console.WriteLine(string.Join("", "1.33.45".Split('.').Select(ech => ech.PadLeft(2, '0')).ToArray())); 
 //Outputs: 334405
Console.WriteLine(string.Join("", "1.1".Split('.').Select(ech => ech.PadLeft(2, '0')).ToArray()));
//Outputs: 0101

拆分将为您提供零件,如果需要,用零填充它,您的长度2如示例所示

return (string.Join("", tempRowKey.Split('.').Select(ech => ech.PadLeft(2, '0')).ToArray()) ;
于 2012-07-11T10:20:59.807 回答
0

这应该有效:

public string DotFormatToRowKey(string tempRowKey) {
        var splits = tempRowKey.Split('.') // Split string at "."
                     .Select(x => String.Format("{0:d2}", Int32.Parse(x))) // Specify string format
                     .ToList();
        return String.Join(String.Empty, splits.ToArray()); // Join array and return
}

参考:http: //msdn.microsoft.com/en-us/library/dd260048.aspx

于 2012-07-11T10:21:52.187 回答