c#中的字符串模式匹配

时间:2014-12-11 17:41:21

标签: c# design-patterns random number-formatting

我有一个带SSN号码作为参数的函数。输入可以采用以下格式之一(SSN的有效性不是因素)

999-99-9999
99-999-9999
9-9999-9999
999999999
99999999-9

连字符可以在任何位置,输入可以是任何长度。 此方法将创建具有相同输入长度的随机数,并且输出将在与输入相同的位置上具有连字符

例如,如果输入9-9999-9999,则随机输出可以是1-2234-5678(匹配连字符位置) 例如,如果输入99999999-9,则随机输出可以是12234567-8(匹配连字符位置)

public String GenerateNumber(String input)
{
    //find the location of hyphens in the input
    String output = Generate random number of same length as input //ToString();
   //put hyphens on the random number generated above at the same locations matching input
   return output
}

如果C#中提供的示例代码也可以使用,那将会有所帮助。

1 个答案:

答案 0 :(得分:0)

这是一种做法。

public string GenerateNumber(string input)
{
    if (string.IsNullOrWhiteSpace(input))
    {
        throw new ArgumentNullException("input");
    }

    Random rand = new Random();
    StringBuilder builder = new StringBuilder();

    for (int i = 0; i < input.Length; i++)
    {
        if (input[i] == '-')
        {
            builder.Append("-");
        }
        else
        {
            builder.Append(rand.Next(0, 9).ToString());
        }
    }

    return builder.ToString();
}