使用正则表达式C#替换Unicode(泰米尔语)字符串
发布时间:2020-12-14 06:23:36 所属栏目:百科 来源:网络整理
导读:我正在实施泰米尔语的词法分析. 我需要通过以下条件替换Text Element值 string[] ugaramStrings = { "??","??","??","??","??","??" }; string[] tamilvowels = { "?",// "u0b85" "?",//"u0b86" "?",//"u0b87" "?",//"u0b88" "?",//"u0b89" "?",//"u0b
我正在实施泰米尔语的词法分析.
我需要通过以下条件替换Text Element值 string[] ugaramStrings = { "??","??","??","??","??","??" }; string[] tamilvowels = { "?",// "u0b85" "?",//"u0b86" "?",//"u0b87" "?",//"u0b88" "?",//"u0b89" "?",//"u0b8A" "?",// "u0b8E" "?",//"u0b8F" "?",//"u0b90" "?",//"u0b92" "?",//"u0b93" "?"//"u0b94" }; 如果任何单词具有来自ugaramStrings和tamil元音元素的元素连续. 例如,??????*???*????替换为??????*?*????. 我通过使用TextElementEnumerator Class检查下一个字符串元素来完成它.
试试这个:
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 因此你不能简单地[????????????],但你必须(??|??|??|??|??|??). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |