从字符串中删除单词或字符后跟空格或在c#中的空格之前

我有一个字符串

string name = "AL QADEER UR AL REHMAN AL KHALIL UN"; 

我如何删除所有字符ALURUN或者可能更像这样。

我的字符串应该是这样的;

QADEER REHMAN KHALIL

目前我正在尝试这样做;

 List list = new List { "AL", "UR", "UN" }; foreach (var item in list ) { systemName = systemName.Replace(item, ""); } 

这也是从KHALIL删除AL ,我如何将其限制为不删除包含该字符的单词。

更新:向List单词添加空格时,只会删除单词前后空格的单词。 并将UR连接到后续单词。 我正在加载要从数据库中删除的单词列表;

请试试这个:

 var name = "AL QADEER UR AL REHMAN AL KHALIL UN"; var list = new List { "AL", "UR", "UN" }; name = string.Join(" ", name.Split(' ').ToList().Except(list)); 
 static void TestRegex() { string name = "AL QADEER UR AL REHMAN AL KHALIL UN"; // Add other strings you want to remove string pattern = @"\b(AL|UR|UN)\b"; name = Regex.Replace(name, pattern, String.Empty); // Remove extra spaces name = Regex.Replace(name, @"\s{2,}", " ").Trim(); Console.WriteLine(name); } 

UPDATE

您可以这样生成模式:

 // Generate pattern var list = new List { "AL", "UR", "UN" }; string pattern = @"\b(" + String.Join("|", list) + @")\b"; 
 var words = new[] { "AL", "UR", "UN" }; var arr = systemName.Split(new[] { " " }, StringSplitOptions.RemoveEmptyEntries).Except(words); systemName = string.Join(" ", arr); 

无需使用正则表达式。 定义了带有“禁止”单词的列表,就足以迭代句子中的wprds进行过滤,如果单词在禁止单词列表中,则排除它,否则,在最终字符串中包含单词。

试试这个:

 string name = "AL QADEER UR AL REHMAN AL KHALIL UN"; string systemName = ""; List list = new List { "AL", "UR", "UN" }; foreach (var item in name.Split(new char[] { ' ', ',', '.' }, StringSplitOptions.RemoveEmptyEntries)) systemName += list.Contains(item) ? "" : item + " "; 

我正在从数据库加载该列表,并且可以随时更改,如何在更改发生时在正则表达式中使用它

那么,长度总是2?

不,但不能大于4

 public static void Main() { var input = "AL QADEER UR AL REHMAN AL KHALIL UN AAA BBB"; Regex re = new Regex(@"\b\w{1,4}\b"); var result = re.Replace(input, ""); Console.WriteLine(result); } 

OUTPUT:

 QADEER REHMAN KHALIL 

dotNetFiddle

LINQEXCEPT的帮助下回答

 string name = "AL QADEER UR AL REHMAN AL KHALIL UN"; var list = new string[] { "AL", "UR", "UN" }; name = name .Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries) .Except(list) .Aggregate((prev, next) => $"{prev} {next}"); 

产量QADEER REHMAN KHALIL