C# 向字符串中添加递增的数字

C# 向字符串中添加递增的数字,c#,.net,C#,.net,我想在字符串的末尾加一个数字 例如 约翰1 贝思2 麦克风3 玛丽4 类最终名称 { 公共字符串名称(字符串初始名称) { string finalName=string.Empty; 对于(int i=1;i

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

例如

约翰1

贝思2

麦克风3

玛丽4

类最终名称
{
公共字符串名称(字符串初始名称)
{
string finalName=string.Empty;
对于(int i=1;i<10;i++)
{
finalName=initialName+i.ToString(“0”);
}
返回最终名称;
}
}
最终名称=新的最终名称();
我得到的结果是:

jonh9

贝思9

mike9

玛丽9


我做错了什么?

您应该从
函数名中删除for循环。
循环总是以
i
等于9结束,结果总是
initialName
+9

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

string[] names = new string[] { "john", "beth", "mike", "mary" };

for (int i = 0; i < names.Length; i++)
{
    names[i] = names[i] + (i + 1).ToString();
}
string[]names=新字符串[]{“john”、“beth”、“mike”、“mary”};
for(int i=0;i
您应该从
函数名中删除for循环。
循环总是以
i
等于9结束,结果总是
initialName
+9

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

string[] names = new string[] { "john", "beth", "mike", "mary" };

for (int i = 0; i < names.Length; i++)
{
    names[i] = names[i] + (i + 1).ToString();
}
string[]names=新字符串[]{“john”、“beth”、“mike”、“mary”};
for(int i=0;i
您只是在方法内部循环并返回最后一个值

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

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));    
}
public IEnumerable名称(IEnumerable名称)
{
返回名称。选择((s,i)=>s+(i+1));
}

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

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

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));    
}
public IEnumerable名称(IEnumerable名称)
{
返回名称。选择((s,i)=>s+(i+1));
}

您要做的是修改您的方法,使其接受一组名称,然后使用递增索引器修改这些名称:

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

    foreach (string name in names)
    {
        yield return name + index;
        index++;
    }
}
公共静态IEnumerable修改名称(IEnumerable名称)
{
int指数=1;
foreach(名称中的字符串名称)
{
收益率返回名称+索引;
索引++;
}
}

Fiddle

您要做的是修改您的方法,使其接受一组名称,然后使用递增索引器修改这些名称:

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

    foreach (string name in names)
    {
        yield return name + index;
        index++;
    }
}
公共静态IEnumerable修改名称(IEnumerable名称)
{
int指数=1;
foreach(名称中的字符串名称)
{
收益率返回名称+索引;
索引++;
}
}

Fiddle

循环完成后返回。在循环的最后,你们会得到i=9,这就是为什么你们会得到这种行为。你能分享一下你是如何调用这个方法的吗?@ChetanRanpariya我编辑添加了这个类。这些名称来自一个文本文件。当我第一次复制它时,我错过了它。让我重新表述我的问题-谁调用
code.ame
方法?您能分享从文件中读取名称并调用此方法的代码吗?对不起。我今天似乎无法复制。您将在循环完成后返回。在循环的最后,你们会得到i=9,这就是为什么你们会得到这种行为。你能分享一下你是如何调用这个方法的吗?@ChetanRanpariya我编辑添加了这个类。这些名称来自一个文本文件。当我第一次复制它时,我错过了它。让我重新表述我的问题-谁调用
code.ame
方法?您能分享从文件中读取名称并调用此方法的代码吗?对不起。我今天似乎无法复制。嗯,我不熟悉您的代码,但如果您每次都创建一个新实例,它将无法工作。您必须将字段更改为
static
或继续使用相同的实例。我不熟悉您的代码,但如果您每次都创建一个新实例,它将无法工作。您必须将字段更改为
static
或继续使用相同的实例