微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用正则表达式C#替换Unicode(泰米尔语)字符串

我正在实施泰米尔语的词法分析.
我需要通过以下条件替换Text Element值
string[] ugaramStrings = { "கு","சு","டு","து","பு","று" };
        string[] tamilvowels =
            {
                "அ",// "\u0b85"
                "ஆ",//"\u0b86"
                "இ",//"\u0b87"
                "ஈ",//"\u0b88"
                "உ",//"\u0b89"
                "ஊ",//"\u0b8A"
                "எ",// "\u0b8E"
                "ஏ",//"\u0b8F"
                "ஐ",//"\u0b90"
                "ஒ",//"\u0b92"
                "ஓ",//"\u0b93"
                "ஔ"//"\u0b94"
            };

如果任何单词具有来自ugaramStrings和tamil元音元素的元素连续.
需要替换ugaram字符串并返回值.

例如,அமர்ந்*துஇ*னிது替换为அமர்ந்*இ*னிது.
即&=>இ

我通过使用TextElementEnumerator Class检查下一个字符串元素来完成它.
是否有任何可能性,以便使用RegularExpression替换它

试试这个:
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#字符.

例如கு是’க””.

这是非法的:

char ch = 'இ';

这是合法的:

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

因此你不能简单地[குசுடுதுபுறு],但你必须(கு|சு|டு|து|பு|று).

原文地址:https://www.jb51.cc/regex/356825.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐