2017-03-24 21 views
0

文字列内の特定の種類のUnicode文字列については、Unicode文字列を別の種類に置き換えたいと考えています。ユニコード文字列への変換方法別の種類のユニコード文字列への変換

EX)1.

//Hexadecimal 4characters 
string base="U+1234FFFF040001041234"; 
//I want to replace this type----> ሴЀĄሴ 

EX)2.

//Hexadecimal 4characters 
string base="U+1234 U+FFFF U+0400 U+0104 U+1234"; 
//----> ሴ  Ѐ Ą ሴ 

私は正規表現とのパターンマッチングを行う方法を疑問に思って。 そして、どうやってそのように置き換えることができるのだろうか。

答えて

0
Regex regexUnicode = new Regex(@"U\+([0-9A-F]{4})+"); 

     MatchCollection resultCollection = regexUnicode.Matches(str); 
     foreach (Match matched in resultCollection) { 

      int length = matched.Groups[0].Length;      
      string matchedStr = matched.Groups[0].ToString();   
      int startIndex = str.IndexOf(matchedStr);     
      string temp = matchedStr; 
      string ret = ""; 
      string buffer = ""; 
      int bufCount = 0; 
      for (int i = 0; i < matchedStr.Length; ++i) { 
       if (matchedStr[i] == 'U' || matchedStr[i] == '+') { 
        continue; 
       } else if (bufCount != 4) {       
        buffer += matchedStr[i]; 
        bufCount++; 
       } else if (bufCount == 4) {       
        ret += "&#x" + buffer + ";"; 
        buffer = ""; 
        buffer += matchedStr[i]; 
        bufCount = 1; 
       } 
      } 
      ret += "&#x" + buffer + ";"; 
      str = str.Remove(startIndex, matchedStr.Length);  
      str = str.Insert(startIndex, ret);      
     } 
0

私はC#の(私はほとんどのJavaを使用)に慣れていないけど、ここで私はどうなるのかの抽象的な記述です:

EX)が1 - 文字配列

    に文字列を回し
  • 空の文字列(文字列S = "")

  • 接頭辞を追加し、ループ、プラス次の4つの文字を作成し(ループ中:S = S + "作成& #X" + charArray [K] +をcharArray [k + 1] + charArray [k + 2] + charArray [K + 3])

  • エンド

EX)2.

  • あなたが置き換えられますどの一致したいと思うパターンがあるにセミコロンを追加します。 "U \ + "と置き換えてください。 & #X」を。しかし、あなたは、事前に最初のU +を離陸する必要があります。

あなたはそれが繰り返し演算子であり、そしてバックスラッシュがそれをエスケープしますので、プラスがある前にバックスラッシュを追加する必要が理由。私はC#について知りませんが、Javaでは文字列でエスケープする必要がありますので、実際には "U \\ +"を使用します。

関連する問題