用整数增加C#中的名称
我需要得到一个对象并检查它是否已经存在 如果是这样,我想添加一个数字,或在其名称中增加数字。 例如,如果我有一个对象“a”,并且它存在,我需要添加一个1,所以它被称为a1。 如果存在a1、a2等 我该怎么做呢 我的代码:用整数增加C#中的名称,c#,C#,我需要得到一个对象并检查它是否已经存在 如果是这样,我想添加一个数字,或在其名称中增加数字。 例如,如果我有一个对象“a”,并且它存在,我需要添加一个1,所以它被称为a1。 如果存在a1、a2等 我该怎么做呢 我的代码: if (e.TreeNode.Tag is Variant) { if (variantExists(e.TreeNode.Text)) { Random r = new Random(); int randomNumber =
if (e.TreeNode.Tag is Variant)
{
if (variantExists(e.TreeNode.Text))
{
Random r = new Random();
int randomNumber = r.Next(0, 99);
e.TreeNode.Text = e.TreeNode.Text + randomNumber;
//e.TreeNode.Remove();
return;
}
}
你能改变TreeNode的等级吗?我将为Label(没有索引的Name)和Index添加属性,并使Name属性为只读,即
class TreeNode
{
public int Index {get;set;}
public string Label {get;set;}
public string Name
{
get { return Index == 0 ? Label : Label + Index; }
}
}
在代码中,您只需要将Index属性设置为所需的值,而不必担心整个字符串解析过程
string name = "SomeName";
string tempName = name;
int n = 0;
while (DoesNameExist(tempName))
{
n++;
tempName = name + n;
}
name = tempName;
这对于同一对象的大量对象来说是无效的,但这不应该发生,对吗
用另一种方法,去掉尾随的数字来找到“原始”名称的问题在于,原始名称上可能真的有数字
你说你加上:
SomeName
SomeName99
SomeName
SomeName99
上面的代码将为您提供
SomeName
SomeName1
SomeName99
SomeName991
类似于这一点的东西可能会起作用:
var existingItems = new HashSet<string>();
var items = new List<string>{"a", "b", "a"};
foreach (var item in items)
{
var tempItem = item;
var i = 1;
while (!existingItems.Add(tempItem))
tempItem = tempItem + i++;
}
var existingItems=new HashSet();
变量项=新列表{“a”、“b”、“a”};
foreach(项目中的var项目)
{
var tempItem=项目;
var i=1;
而(!existingItems.Add(tempItem))
tempItem=tempItem+i++;
}
有些代码会非常有用……你有没有到目前为止尝试过的任何代码示例?动机是什么……?为了让我们回答,你应该详细说明(最好像@GuillaumeSlashy和Kev所说的那样,添加一些代码)你是如何坚持和读取名称的。基本上,我有一个垃圾桶,对象被删除后可以放在垃圾桶中,但是如果创建了一个与垃圾桶中的对象同名的对象,那么它会自动丢弃,必须创建一个新的对象。这不应该是这样的,因为客户机希望添加新对象,但要使用名称变体。