2017-03-24 2 views
0

문자열의 특정 유형의 유니 코드 문자열에 대해서는 유니 코드 문자열을 다른 형식으로 바꿔야합니다.유니 코드 문자열 다른 형식의 유니 코드 문자열로 변환

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# (내가 자바를 사용하는 대부분)에 익숙하지 않은,하지만 여기에 내가 어떻게 할 것인지의 추상적 인 설명입니다 :

EX) 1. - 문자 배열

    에 문자열을 돌려 & #x를 "+ charArray [K] + :
  • 은 (문자열의 =" ") S = s의 +

  • 루프에서 접두사를 더한 다음 4 개 문자를 (추가 루프 만들기"빈 문자열을 만들기 charArray [k + 1] + charArray [k + 2] + charArray [K + 3])

EX) 2.

  • 당신이 교체 될 일치하도록 할 것입니다 패턴이에 세미콜론을 추가 : "U \ + "그리고 당신은 그것을"; 당신이이 반복 연산자이기 때문에 플러스가 앞에 백 슬래시를 추가해야하는 이유 & #x를가. ​​"하지만 당신은

. 미리 최초의 U +를 벗을 이유가되며, 백 슬래시는 이스케이프됩니다. C#에 대해서는 모르지만 Java에서는 문자열에서 이스케이프를 벗어나야하므로 실제로 "U \\ +"를 사용합니다.

관련 문제