首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >向重复字符串中添加增量数字

向重复字符串中添加增量数字
EN

Stack Overflow用户
提问于 2014-03-27 21:52:25
回答 3查看 2.5K关注 0票数 3

我正在使用c# (使用Visual的.Net4),并试图根据程序中现有的字符串,找出向输入的字符串附加增量数字的算法。做得不太好四处寻找答案。

我有一个List<string>。一个例子就是

代码语言:javascript
复制
{"MyItem (2)", "MyItem", "Other thing", "string here", "MyItem (1)"}

因此,假设用户想要向这个列表中添加另一个字符串,他们选择了"MyItem“作为要添加的字符串。因此,给定输入和现有列表,该算法将返回"MyItem (3)“作为要添加的新字符串。

它的功能与Windows资源管理器中的相同,即不断添加新文件夹(“新建文件夹(1)”、“新文件夹(2)”和“打开”)。

我正在尝试循环遍历列表,找出下一个逻辑数字应该是什么,但我被卡住了(代码变得越来越大)。有人知道一种优雅的方法吗?(我对Regex不太在行,所以也许这就是我想要的)

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-03-27 21:57:43

这应该是可行的:

代码语言:javascript
复制
var list = new List<string>{"MyItem (2)", "MyItem", "Other thing", "string here", "MyItem (1)"}   ; 

string str = "MyItem";
string newStr = str;

int i = 0;
while(list.Contains(newStr))
{
   i++;
   newStr = string.Format("{0} ({1})",str,i);
}

// newStr = "MyItem (3)"
票数 2
EN

Stack Overflow用户

发布于 2014-03-27 21:56:11

获取input并搜索它,如果它存在于列表中,则获取计数并连接输入字符串和count +1,否则只需将输入添加到列表中:

代码语言:javascript
复制
var input = Console.ReadLine(); // just for example

if(list.Any(x => x == input))
{
    var count = list.Count(x => x == input);
    list.Add(string.Format("{0} ({1})", input, count+1);
} 
else list.Add(input);
票数 3
EN

Stack Overflow用户

发布于 2014-03-27 22:00:51

伪代码:如果列表没有这样的字符串,将其添加到列表中。否则,设置变量N= 1,扫描列表并查找字符串,如给定的字符串+“(*)”(在这里Regex将有所帮助)。如果找到任何字符串,从大括号中取出数字,并将其与N. Set N= MAX(该数字+ 1,N )进行比较。扫描列表后,N包含要添加的数字。因此,将字符串+“(N)”添加到列表中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22699977

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档