📅  最后修改于: 2023-12-03 14:51:48.650000             🧑  作者: Mango
在阿拉伯文中,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。具体使用哪种方法,可根据实际情况自行选择。