📌  相关文章
📜  如何从阿拉伯字符中删除 tashkeel - C# (1)

📅  最后修改于: 2023-12-03 14:51:48.650000             🧑  作者: Mango

如何从阿拉伯字符中删除 tashkeel - C#

在阿拉伯文中,tashkeel 是一种小符号,用来表示发音或重音。有时在对阿拉伯文进行文本操作时,需要将这些 tashkeel 删除。本文将介绍如何使用 C# 从阿拉伯字符中删除 tashkeel。

方法一:使用正则表达式

使用正则表达式可以快速、有效地删除 tashkeel。

using System.Text.RegularExpressions;

string input = "السَّلام عليكم ورحمة الله وبركاته";
string pattern = @"\p{M}";

string output = Regex.Replace(input, pattern, "");

Console.WriteLine(output);

输出:

السلام عليكم ورحمة الله وبركاته

上述代码中,使用 \p{M} 匹配所有的 tashkeel。然后使用 Regex.Replace 方法将匹配到的 tashkeel 替换为空字符串。

方法二:使用字符映射表

在阿拉伯文字符编码表中,所有的 tashkeel 都与 Unicode 规范中的某个字符对应。因此可以使用字符映射表将 tashkeel 转换成空格或其他字符。

string input = "السَّلام عليكم ورحمة الله وبركاته";
string output = "";

var tashkeelTable = new Dictionary<char, char>()
{
    {'\u064B', '\0'}, // FATHATAN
    {'\u064C', '\0'}, // DAMMATAN
    {'\u064D', '\0'}, // KASRATAN
    {'\u064E', '\0'}, // FATHA
    {'\u064F', '\0'}, // DAMMA
    {'\u0650', '\0'}, // KASRA
    {'\u0651', '\0'}, // SHADDA
    {'\u0652', '\0'}, // SUKUN
    {'\u0653', '\0'}, // MADDAH ABOVE
    {'\u0654', '\0'}, // HAMZA ABOVE
    {'\u0655', '\0'}, // HAMZA BELOW
    {'\u0656', '\0'}, // SUBSCRIPT ALEF
    {'\u0657', '\0'}, // INVERTED DAMMA
    {'\u0658', '\0'}, // MARK NOON GHUNNA
    {'\u0659', '\u0020'}, // SMALL HIGH ROUNDED DOT ABOVE
    {'\u065A', '\u0020'}, // SMALL HIGH UPRIGHT RECTANGULAR DOT ABOVE
    {'\u065B', '\u0020'}, // SMALL HIGH DOT ABOVE
    {'\u065C', '\u0020'}, // SMALL LETTER V ABOVE
    {'\u065D', '\u0020'}, // SMALL LETTER W ABOVE
    {'\u065E', '\u0020'}, // SMALL LETTER Y ABOVE
    {'\u065F', '\u0020'}, // SMALL LETTER TAH ABOVE
    {'\u0670', '\u0627'} // ALEF MAKSURA
};

foreach (char c in input)
{
    if (!tashkeelTable.ContainsKey(c))
    {
        output += c;
    }
    else
    {
        output += tashkeelTable[c];
    }
}

Console.WriteLine(output);

输出:

السلام عليكم ورحمة الله وبركاته

上述代码中,首先创建了一个字符映射表,其中每个 tashkeel 对应着一个空字符或者其他字符。然后遍历输入字符串中的每个字符,如果该字符是 tashkeel,则从字符映射表中取出对应的字符,否则直接添加该字符到输出字符串中。

无论是使用正则表达式,还是使用字符映射表,都可以快速、有效地删除阿拉伯文中的 tashkeel。具体使用哪种方法,可根据实际情况自行选择。