[英]Removing word or character from string followed by space or before space in c#
我有一个弦
string name = "AL QADEER UR AL REHMAN AL KHALIL UN";
我将如何删除所有字符AL
, UR
, UN
或其他类似的字符。
我的弦应该像这样;
加德勒·雷曼·哈利勒
目前,我正在尝试这样做。
List<string> list = new List<string> { "AL", "UR", "UN" };
foreach (var item in list )
{
systemName = systemName.Replace(item, "");
}
这也从KHALIL
删除了AL
,我如何将其限制为不删除包含该字符的单词。
更新:在List
单词中添加空格时,只会删除单词前后有空格的单词。 并将UR连接到以下单词。 我正在加载要从数据库中删除的单词列表;
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);
}
更新
您可以通过以下方式生成模式:
// Generate pattern
var list = new List<string> { "AL", "UR", "UN" };
string pattern = @"\b(" + String.Join("|", list) + @")\b";
请尝试这个:
var name = "AL QADEER UR AL REHMAN AL KHALIL UN";
var list = new List<string> { "AL", "UR", "UN" };
name = string.Join(" ", name.Split(' ').ToList().Except(list));
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<string> list = new List<string> { "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);
}
输出:
QADEER REHMAN KHALIL
借助EXCEPT
纯LINQ
答案
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.