我正在使用泰米尔语进行词法分析。 我需要通过以下条件
替换Text Element值 string[] ugaramStrings = { "கு", "சு", "டு", "து", "பு", "று" };
string[] tamilvowels =
{
"அ",// "\u0b85"
"ஆ",//"\u0b86"
"இ",//"\u0b87"
"ஈ",//"\u0b88"
"உ",//"\u0b89"
"ஊ",//"\u0b8A"
"எ",// "\u0b8E"
"ஏ",//"\u0b8F"
"ஐ",//"\u0b90"
"ஒ",//"\u0b92"
"ஓ",//"\u0b93"
"ஔ"//"\u0b94"
};
如果任何单词具有来自ugaramStrings和tamil元音元素的元素连续。 需要替换ugaram字符串并返回值。
例如。அமர்ந்* துஇ *னிது替换为அமர்ந்* இ *னிது。 即&=>இ
我是通过使用TextElementEnumerator Class检查下一个字符串元素来完成的。 是否有任何可能性,以便使用RegularExpression
替换它答案 0 :(得分:6)
试试这个:
string[] ugaramStrings = { "கு", "சு", "டு", "து", "பு", "று" };
string[] tamilvowels =
{
"அ",// "\u0b85"
"ஆ",//"\u0b86"
"இ",//"\u0b87"
"ஈ",//"\u0b88"
"உ",//"\u0b89"
"ஊ",//"\u0b8A"
"எ",// "\u0b8E"
"ஏ",//"\u0b8F"
"ஐ",//"\u0b90"
"ஒ",//"\u0b92"
"ஓ",//"\u0b93"
"ஔ"//"\u0b94"
};
var rxTemp = "(" +
string.Join("|", ugaramStrings) + ")(" +
string.Join("|", tamilvowels) + ")";
var rx = new Regex(rxTemp);
string str = "அமர்ந்*துஇ*னிது";
// This will contain all the matches
var matches = new List<Match>();
string str2 = rx.Replace(str, match => {
matches.Add(match);
// Group[1] will contain the ugaram letter,
// Group[2] will contain the tamil vowel
return match.Groups[2].Value;
});
它似乎正常工作。 str2
将包含已替换的字符串,而matches
将包含所有匹配
请注意,ugaram字符是由字符组成的,例如,每个ugaram&#34;字符&#34;使用两个C#char
。
例如கு是&#39;க&#39; +&#39;ு&#39;。
这是非法的:
char ch = 'இ';
这是合法的:
string str = "இ"; // str.Length == 2
因此,您不能[குசுடுதுபுறு]
,但必须(கு|சு|டு|து|பு|று)
。