8
4

1 回答 1

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“字符”使用两个 C# char

例如 கு 是 'க' + 'ு'。

这是非法的:

char ch = 'இ';

这是合法的:

string str = "இ"; // str.Length == 2

出于这个原因,你不能简单地[குசுடுதுபுறு]但你必须(கு|சு|டு|து|பு|று)

于 2013-09-11T10:36:39.140 回答