将递增的数字添加到字符串

时间:2017-10-05 17:34:53

标签: c# .net

我想在字符串的末尾添加一个数字。

例如。

  

john1

     

beth2

     

mike3

     

mary4​​

class finalName
{
   public string name(string initialName)
      {
      string finalName = string.Empty;
      for (int i = 1; i < 10; i++)
      {
          finalName = initialName + i.ToString("0");                    
       }
         return finalName;
   }
}

finalName name = new finalName();

我得到的结果是:

  

jonh9

     

beth9

     

mike9

     

mary9

我做错了什么?

3 个答案:

答案 0 :(得分:3)

您要做的是修改您的方法,使其收集一些名称,然后使用递增索引器修改它们:

public static IEnumerable<string> ModifyNames(IEnumerable<string> names)
{
    int index = 1;

    foreach (string name in names)
    {
        yield return name + index;
        index++;
    }
}

小提琴here

答案 1 :(得分:1)

您应该从{"meta":{},"errors":[{"status":400,"code":"invalid_payment","title":"The rider's payment method is invalid and they must update their billing info."}]} 功能中删除for循环。 您的循环始终以name等于9结束,结果始终为i + 9。

我认为你需要这样的东西:

initialName

答案 2 :(得分:1)

您只是在方法内循环并返回最后一个值。

如果您希望函数的每次调用都添加一个递增的数字,那么将此counter作为一个字段添加到您的类中并将其添加到字符串中:

int counter = 1;
public string name(string initialName)
{
    return initialName + counter++;
}

如果您在每次调用时都创建一个新实例,那么该变量应该是static

static int counter = 1;
public string name(string initialName)
{
    return initialName + counter++;
}

如果您希望向函数发送字符串列表并使用递增的数字返回列表,那么您应首先更改签名以获取集合并返回集合:

public IEnumerable<string> name(IEnumerable<string> names)
{
    return names.Select( (s,i) => s+(i+1));    
}