regex 从阿拉伯文字中所有字符串中删除“ال”

jc3wubiy  于 2022-11-18  发布在  其他
关注(0)|答案(2)|浏览(130)

我正在尝试从每个包含“ال”的阿拉伯字符串中删除“ال”
我试图通过使用以下代码来实现这一点,但它只删除了第一个单词中的“ال”:
第一个

a2mppw5e

a2mppw5e1#

如果您要处理 words 而不仅仅是每次出现的Replace,您可能需要 regular expression 来匹配单词,例如

using System.Text.RegularExpressions;

...

string input = "الغيث الغيث الغيث";
string[] prefixes = { "ال", "اَلْ", "الْ", "اَل" };

// \b - word boundary - we are looking for prefixes only
string output = Regex.Replace(input, @$"\b({string.Join("|", prefixes)})", "");

让我们看一看:

Console.Write(string.Join(Environment.NewLine, input, output));

输出量:

الغيث الغيث الغيث
غيث غيث غيث
ccrfmcuu

ccrfmcuu2#

请尝试以下正则表达式:

\b\u0627(?:\u0644\u0652?|\u064e\u0644\u0652?)

请参阅regex demo
这是您想要的C#程式码:

using System;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      string input = @"الغيث الغيث الغيث الغيث

اَلغيث اَلغيث اَلغيث اَلغيث

اَلْغيث اَلْغيث اَلْغيث اَلْغيث

الْغيث الْغيث الْغيث الْغيث
";

      string pattern = @"\b\u0627(?:\u0644\u0652?|\u064e\u0644\u0652?)";
      string replacement = "";
      string result = Regex.Replace(input, pattern, replacement);
      
      Console.WriteLine("Original String: {0}", input);
      Console.WriteLine("\n\n-----------------\n\n");
      Console.WriteLine("Replacement String: {0}", result);                             
   }
}

请参阅C#程式码示范。

相关问题