Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我需要一个C#函数,可以从一种行格式转换为另一种行格式?_C# - Fatal编程技术网

我需要一个C#函数,可以从一种行格式转换为另一种行格式?

我需要一个C#函数,可以从一种行格式转换为另一种行格式?,c#,C#,我必须进行以下转换,其中我的源字符串可以有一个或两个句点,每个数字由两位数字表示。所以“1”变成“01”,而“90”变成“90”。下面是一个before->after的示例 0.0 -> 0000 1.1 -> 0101 10.10 -> 1010 1.88 -> 0188 1.11.22 -> 011122 33.44.5 -> 334405 我有以下功能,但它确实适用于不同的组合。有谁能建议我如何在我的输入中有1或2个句点的情况下使用它: pub

我必须进行以下转换,其中我的源字符串可以有一个或两个句点,每个数字由两位数字表示。所以“1”变成“01”,而“90”变成“90”。下面是一个before->after的示例

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'));
    }

我想您只需要
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
Split将获得零件,如果需要,用零填充,长度为
2
,如示例所示

return (string.Join("", tempRowKey.Split('.').Select(ech => ech.PadLeft(2, '0')).ToArray()) ;
这应该起作用:

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
}

参考资料:

@V4-我有点困惑。这应该是一个右垫还是一个左垫。James说的是PadRight,但如果你说的是
PadRight
,那么
33.44.5
->
334450
,这不是你想要的(
0
填充在字符串的右侧),所以我应该删除所有应用于连接字符串的“.PadRight(4,'0')?@V4Vendetta PadRight”,而不是字符串的每个部分。如果输入中至少有一个点,OP的代码就没有问题。@JamesHill,除非您使用从右到左的方式,否则它是不可能的。另外一个答案不使用PadRight,我对此感到困惑:-(@JamesHill实际上PadRight在您的代码中不起任何作用,因为它是在字符串已填充到总长度2之后应用的。是的,
PadRight
在这里不是必需的。谢谢。所以我想大家都同意您的解决方案是可以的,还是我应该删除您的PadRight?@Anne,因为我的初始答案似乎不是最优的,我已经更新了m我用一个新的解决方案发布。你们的函数有什么问题吗?你们能提供样本吗?输出不正确的地方?我只能在你们的输入中并没有点的地方看到问题。