C# 在破折号的左侧和右侧添加前导零

C# 在破折号的左侧和右侧添加前导零,c#,.net,C#,.net,我有一个输入字符串,用连字符分隔数字。我需要左边正好是5位数。如果小于,则添加前导零。右侧需要是4位数字。如果小于,则添加前导零 例如: 0002-800 -> 00002-0800 0001-0800 -> 00001-0800 12345-220 -> 12345-0220 最好的方法是在-字符上拆分字符串,然后使用PadLeft函数吗 我需要左边正好是5位数。如果较少,则添加 前导零。右侧需要是4位数字。少一点,加上 前导零 如果我需要pad,那个选择的项目可以很容易地

我有一个输入字符串,用连字符分隔数字。我需要左边正好是5位数。如果小于,则添加前导零。右侧需要是4位数字。如果小于,则添加前导零

例如:

0002-800 -> 00002-0800
0001-0800 -> 00001-0800
12345-220 -> 12345-0220
最好的方法是在-字符上拆分字符串,然后使用PadLeft函数吗

我需要左边正好是5位数。如果较少,则添加 前导零。右侧需要是4位数字。少一点,加上 前导零

如果我需要pad,那个选择的项目可以很容易地改变吗 左侧为8位,左侧为,右侧为3位等或任何其他 组合

一般写:

private void button1_Click(object sender, EventArgs e)
{
    String input = "12345-12";
    String output = PadColumns(input, '-', '0', new int[] {8,3});
    Console.WriteLine(input);
    Console.WriteLine(output);
}

private String PadColumns(String input, char delimiter, char paddingChar, int[] columnWidths)
{
    String[] values = input.Split(new char[] {delimiter});
    for(int i=0; i<values.Length; i++)
    {
        if (i<columnWidths.Length)
        {
            values[i] = values[i].PadLeft(columnWidths[i], paddingChar);
        }
    }
    return String.Join(delimiter.ToString(), values);
}
private void按钮1\u单击(对象发送者,事件参数e)
{
字符串输入=“12345-12”;
字符串输出=PadColumns(输入'-','0',新int[]{8,3});
控制台写入线(输入);
控制台写入线(输出);
}
私有字符串PadColumns(字符串输入、字符分隔符、字符paddingChar、int[]列宽)
{
String[]values=input.Split(新字符[]{delimiter});
对于(int i=0;i
我需要左边正好是5位数字。如果它小于5位,则添加
前导零。右侧必须是4位数字。如果少于4位,请添加
前导零

如果我需要pad,那个选择的项目可以很容易地改变吗 左侧为8位,左侧为,右侧为3位等或任何其他 组合

一般写:

private void button1_Click(object sender, EventArgs e)
{
    String input = "12345-12";
    String output = PadColumns(input, '-', '0', new int[] {8,3});
    Console.WriteLine(input);
    Console.WriteLine(output);
}

private String PadColumns(String input, char delimiter, char paddingChar, int[] columnWidths)
{
    String[] values = input.Split(new char[] {delimiter});
    for(int i=0; i<values.Length; i++)
    {
        if (i<columnWidths.Length)
        {
            values[i] = values[i].PadLeft(columnWidths[i], paddingChar);
        }
    }
    return String.Join(delimiter.ToString(), values);
}
private void按钮1\u单击(对象发送者,事件参数e)
{
字符串输入=“12345-12”;
字符串输出=PadColumns(输入'-','0',新int[]{8,3});
控制台写入线(输入);
控制台写入线(输出);
}
私有字符串PadColumns(字符串输入、字符分隔符、字符paddingChar、int[]列宽)
{
String[]values=input.Split(新字符[]{delimiter});

对于(inti=0;iYou已经自己解决了这个问题:(1)在“-”上拆分(
string.split
),(2)左键左键左键右键,(3)左键右键右键,(4)串联(
+
)。如果您愿意,可以将(2)、(3)和(4)组合成一行代码。您需要帮助的具体位置是什么?
string.Join(“-”,str.split('-')。选择((x,pos)=>x.PadLeft(5-pos,'0').Trim()).ToArray()
@haim770:左侧和右侧有不同的长度(5对4位)。另外:不要破坏!;-)@haim770:哦,真的!我很抱歉。@Ctrl_Alt_失败:嗯。你可以使用格式字符串(
$“{a:00000}-{b:0000}
),这看起来很优雅,但您必须先将这些子字符串解析为整数。对于拆分,string.Split在这种特殊情况下比正则表达式容易得多。您已经自己解决了这一问题:(1)在“-”上拆分(
string.Split
),(2)左键左键,(3)左键右键,(4)串联(
+
)。如果您愿意,您可以将(2)、(3)和(4)组合成一行代码。您需要帮助的具体位置是什么?
String.Join(“-”,str.Split(“-”)。Select((x,pos)=>x.PadLeft(5-pos,'0').Trim())。ToArray())
@haim770:左侧和右侧有不同的长度(5对4位)。另外:不要破坏!;-)@haim770:哦,真的!我很抱歉。@Ctrl\u Alt\u Fault:Hm..您可以使用格式字符串(
$“{a:00000}-{b:0000}”
),这看起来很优雅,但您必须先将这些子字符串解析为整数。对于拆分,string.Split比正则表达式在这种特殊情况下容易得多。