2011-12-22 33 views
0

我需要獲取一個對象並檢查它是否已經存在。用整數在C#中增加名稱

如果是這樣,我想添加一個數字,或增加其名稱中的數字。 例如,如果我有對象「a」並且它存在,我需要添加一個1,因此它被稱爲a1。 如果a1存在,a2等

我該如何執行此操作?

我的代碼:

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; 
    } 
} 
+0

一些代碼將是非常有益的... – 2011-12-22 10:12:13

+0

你有迄今爲止嘗試過的任何代碼示例嗎? – 2011-12-22 10:12:59

+3

動機是什麼...? – Shai 2011-12-22 10:13:40

回答

0

你可以改變樹節點類?我會爲標籤(名稱沒有索引)和索引添加屬性,使只讀Name屬性,即

class TreeNode 
{ 
    public int Index {get;set;} 
    public string Label {get;set;} 

    public string Name 
    { 
     get { return Index == 0 ? Label : Label + Index; } 
    } 
} 

在你的代碼只需要設置索引屬性爲你所需要的價值,不要擔心整個字符串解析的東西

0
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 
0

沿着這個東西線可以工作:

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++; 
}