다음 String
문자가 있습니다. 나는 위의 순서를 인쇄 할 때유니 코드 문자 문자열
string s = "\\u0625\\u0647\\u0644";
, 내가 얻을 :
\u0625\u0647\u062
이 어떻게 실제 인쇄 가능한 유니 코드 문자 대신이 \의 Uxxxx에 표현받을 수 있나요?
s = System.Text.RegularExpressions.Regex.Unescape(s);
다음 String
문자가 있습니다. 나는 위의 순서를 인쇄 할 때유니 코드 문자 문자열
string s = "\\u0625\\u0647\\u0644";
, 내가 얻을 :
\u0625\u0647\u062
이 어떻게 실제 인쇄 가능한 유니 코드 문자 대신이 \의 Uxxxx에 표현받을 수 있나요?
s = System.Text.RegularExpressions.Regex.Unescape(s);
시도 Regex
:
나는 대답 발견했다 당신이 정말로 문자열을 제어하지 않는 경우
String inputString = "\\u0625\\u0647\\u0644";
var stringBuilder = new StringBuilder();
foreach (Match match in Regex.Matches(inputString, @"\u([\dA-Fa-f]{4})"))
{
stringBuilder.AppendFormat(@"{0}",
(Char)Convert.ToInt32(match.Groups[1].Value));
}
var result = stringBuilder.ToString();
, 그럼 당신이 그 이스케이프 시퀀스를 교체 할 필요가 자신의 값 :
Regex.Replace(s, @"\u([0-9A-Fa-f]{4})", m => ((char)Convert.ToInt32(m.Groups[1].Value, 16)).ToString());
그리고 거기에 \\
도망 치지 않기를 바랍니다.
나는 String.Normalize
의 사용을 제안합니다. 내가 조금 막연한 질문, 당신이 그 문자열을 제어하는 찾을
'Normalize'는 유니 코드 정규화를 수행합니다. 이것은 완전히 별개의 개념입니다. – Joey
: 당신은 모든 것을 여기에서 찾을 수 있습니까? 그렇다면 백 슬래시 중 하나를 제거하십시오. "\ u1234 \ u5678". 그렇지 않다면, 콜백 메서드를 사용하여 regex를 사용하여 숫자를 파싱하고이를 char로 변환 한 다음 그 char을 문자열로 반환하는 것을 고려해야합니다. – Onkelborg
"문자열을 제어 할 수 없다"는 것은 무엇을 의미합니까? 너의 시나리오는 뭐니? –
Ok 답변을 찾았습니다 : System.Text.RegularExpressions.Regex.Unescape() –