簡體   English   中英

在C#中從字符串中刪除空格后的單詞或字符

[英]Removing word or character from string followed by space or before space in c#

我有一個弦

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

我將如何刪除所有字符ALURUN或其他類似的字符。

我的弦應該像這樣;

加德勒·雷曼·哈利勒

目前,我正在嘗試這樣做。

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

dotNetFiddle

借助EXCEPTLINQ答案

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM