我正在实施泰米尔语的词法分析.
我需要通过以下条件替换Text Element值 @H_301_2@string[] ugaramStrings = { "கு","சு","டு","து","பு","று" }; string[] tamilvowels = { "அ",// "\u0b85" "ஆ",//"\u0b86" "இ",//"\u0b87" "ஈ",//"\u0b88" "உ",//"\u0b89" "ஊ",//"\u0b8A" "எ",// "\u0b8E" "ஏ",//"\u0b8F" "ஐ",//"\u0b90" "ஒ",//"\u0b92" "ஓ",//"\u0b93" "ஔ"//"\u0b94" };
我需要通过以下条件替换Text Element值 @H_301_2@string[] ugaramStrings = { "கு","சு","டு","து","பு","று" }; string[] tamilvowels = { "அ",// "\u0b85" "ஆ",//"\u0b86" "இ",//"\u0b87" "ஈ",//"\u0b88" "உ",//"\u0b89" "ஊ",//"\u0b8A" "எ",// "\u0b8E" "ஏ",//"\u0b8F" "ஐ",//"\u0b90" "ஒ",//"\u0b92" "ஓ",//"\u0b93" "ஔ"//"\u0b94" };
如果任何单词具有来自ugaramStrings和tamil元音元素的元素连续.
需要替换ugaram字符串并返回值.
例如,அமர்ந்*துஇ*னிது替换为அமர்ந்*இ*னிது.
即&=>இ
我通过使用TextElementEnumerator Class检查下一个字符串元素来完成它.
是否有任何可能性,以便使用RegularExpression替换它
试试这个:
@H_301_2@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将包含替换的字符串,而匹配将包含所有匹配
请注意,例如,ugaram字符是由字符组成的,因此每个ugaram“字符”使用两个C#字符.
例如கு是’க””.
这是非法的:
@H_301_2@char ch = 'இ';这是合法的:
@H_301_2@string str = "இ"; // str.Length == 2因此你不能简单地[குசுடுதுபுறு],但你必须(கு|சு|டு|து|பு|று).