检查数组中的重复字符串
问题描述:
我正在使用此方法删除空条目,现在我需要检查重复项,但是我使用的是VS 2005的非常旧的版本,没有linq,所以我不能使用重复方法.你能帮忙的话,我会很高兴.谢谢!
Hi I am using this method to remove empty entries, now I need to check for duplicates but I am on a very old version of VS 2005 theres no linq I can''t use the duplicate method. Any help would be nice. Thank!
String[] hostName = htbclb.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries);
答
您可以调整解决方案以使其适合您的需求!
一种可能的解决方案是使用以下代码段.
You can tweak the solution to make to suit your needs!
One possible solution is using the following snippet.
public static class ListExtensions
{
/// <summary>
/// Add
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="List"></param>
/// <param name="item"></param>
/// <returns></returns>
public static bool Add<T>(this List<T> List, T item)
{
bool isAdded = false;
// if this is not a duplicate item
if (!List.Contains(item))
{
// Add this item in the list
List.Add(item);
isAdded = true;
}
return isAdded;
}
/// <summary>
/// ToStringEx
/// </summary>
/// <param name="StringArray"></param>
/// <returns></returns>
public static string ToStringEx(this string[] StringArray)
{
StringBuilder stringBuilder = new StringBuilder();
foreach (string stringItem in StringArray)
{
stringBuilder.AppendFormat("{0},", stringItem);
}
return stringBuilder != null ? stringBuilder.ToString().TrimEnd (new char[] {','}) : string.Empty;
}
}
public class Program
{
static void Main()
{
List<string> stringList = null;
string longString = null;
string[] stringArray = null;
try
{
stringList = new List<string>();
longString = "BOOK,COOK,BOOK,COOK,BOOK,LOOK,COOK,COOK,BOOK";
stringArray = longString.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries);
// Enumerate over the stringArray
foreach (string stringItem in stringArray)
{
// Add this item in the list
stringList.Add<string>(stringItem);
}
// Converting List<string> to string[]
stringArray = stringList.ToArray();
// Converting string[] to comma delimited string
longString = stringArray.ToStringEx();
}
catch (Exception ex)
{
Console.WriteLine(ex.StackTrace);
}
Console.ReadKey();
}
或者,您可以通过扩展方法指定代码并使用内联-
Or you can stip the code from the extension methods and use inline -
static void Main()
{
List<string> stringList = null;
string longString = null;
string[] stringArray = null;
StringBuilder stringBuilder = null;
try
{
stringList = new List<string>();
longString = "BOOK,COOK,BOOK,COOK,BOOK,LOOK,COOK,COOK,BOOK";
stringArray = longString.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries);
// Enumarate over the stringArray
foreach (string stringItem in stringArray)
{
// if this is not a duplicate item
if (!stringList.Contains(stringItem))
{
// Add this item in the list
stringList.Add(stringItem);
}
}
// Converting List<string> to string[]
stringArray = stringList.ToArray();
// Converting string[] to comma delimited string
stringBuilder = new StringBuilder();
foreach (string stringItem in stringArray)
{
stringBuilder.AppendFormat("{0},", stringItem);
}
longString = stringBuilder.ToString();
}
catch (Exception ex)
{
Console.WriteLine(ex.StackTrace);
}
Console.ReadKey();
}
问候,
ErSehmi
Regards,
ErSehmi