c# - 如何根据 C# 中字符串中元素的出现对数组进行排序?

标签 c# arrays

我有一个数组

string [] country = {"IND", "RSA", "NZ", "AUS", "WI", "SL", "ENG", "BAN"};

我有一个字符串

downloadString = "印度 (IND) 和澳大利亚 (AUS) 之间的比赛进入了激动人心的阶段。南非 (RSA) 赢得了英格兰 (ENG) 的比赛 "

所以我试图找出字符串中存在哪些数组元素。我能够发现字符串中存在 INDRSAAUSENG 。但是,我无法根据它们在字符串中的出现对它们进行排序。所以现在我得到的输出是

IND、RSA、AUS、ENG

然而,我真正需要的是

IND、AUS、RSA、ENG

我该怎么做?

最佳答案

另一种可能性是使用具有以下模式的正则表达式:

\b(IND|RSA|NZ|AUS|WI|SL|ENG|BAN)\b

Demo

示例代码:(未经测试)

MatchCollection matches= System.Text.RegularExpresssion.Regex.Matches(yourStringSample, patternHere);

for each (Match m in matches)
{
   Debug.Print(m.ToString())
}

希望对您有所帮助!

编辑:

根据下面的评论,我应该强调正则表达式模式应该使用类似下面的代码构建:(如 JLRishe 所建议的那样)

string pattern = "(" + string.Join("|", country.Select(c => Regex.Escape(c))) + ")"

关于c# - 如何根据 C# 中字符串中元素的出现对数组进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27717039/

相关文章:

c# - ASP.net 重定向到调用页面

java - 使用 Jaxb 从 xsd 生成 java 数组而不是 Collection 类型

c# - Linq Distinct() 按名称用名称和值填充下拉列表

c# Directory.CreateDirectory( path ),我应该先检查路径是否存在吗?

c# - WebApi任务由于系统缺少足够的缓冲区空间或队列已满,无法对套接字执行操作

C# 在 "bulk"中设置属性值(通过排除)

Java - 文本字段数组不显示

复杂的字符串和数组声明

python - 在 numpy 中采用特定间距的数组差异

java - 从数组的索引检索字符串,但它不起作用