【发布时间】:2019-01-23 17:35:28
【问题描述】:
我正在尝试从逗号分隔的字符串中删除重复值,但结果不一致。例如,
如果我通过了:
STA27,STA27,STA27B,STA27A,STA27B,
我明白了:
STA27,STA27,STA27B,STA27A,
或者,如果我通过了:
STA24,STA24,STA24,STA24,
我明白了:
STA24,STA24,
我尝试了几种方法来消除末尾的逗号,但似乎没有任何效果。我不明白为什么 Distinct 也不起作用。我认为这与字符串终止的方式有关,但在第一个示例中,我得到了前两个条目的重复项,因此这似乎不是位置问题。
有什么想法吗?
public string FindDistinctBeats(String Beats)
// Accept comma-separated string, return distinct values
{
string result = string.Empty;
try
{
result = string.Join(",", Beats.Split(',').Distinct().ToArray());
result = result.TrimEnd(',');
if (String.IsNullOrEmpty(result))
{
return result;
}
else
{
return result.TrimEnd(result[result.Length - 1]);
}
}
catch (Exception e)
{
return e.ToString();
}
}
【问题讨论】:
-
您是否 100% 确定字符串是相同的?前后没有空格,没有奇怪的 unicode 等?
-
您缺少 StringSplitOptions.RemoveEmptyEntries
-
你的方法体可以缩减为一行(注意
beats在C#中应该小写):return beats == null ? "" : string.Join(",", beats.Split(new[] {','}, StringSplitOptions.RemoveEmptyEntries).Distinct()); -
@TheSoftwareJedi 这不能解决这个问题。如果
Distinct没有删除这些值,那么它们会有所不同。RemoveEmptyEntires仅在您输入分隔符之间没有任何内容时才有意义。
标签: c# .net string distinct-values