У меня есть текст вроде этого.Java Unicode Regular Expression
Every person haveue280 sumue340 ambition
Я хочу заменить ue280, ue340 к \ ue280 \ ue340 с регулярным выражением
Есть ли решение
Заранее спасибо
У меня есть текст вроде этого.Java Unicode Regular Expression
Every person haveue280 sumue340 ambition
Я хочу заменить ue280, ue340 к \ ue280 \ ue340 с регулярным выражением
Есть ли решение
Заранее спасибо
Что-то вроде этого?
String s = "Every person haveue280 sumue340 ambition";
// Put a backslash in front of all all "u" followed by 4 hexadecimal digits
s = s.replaceAll("u\\p{XDigit}{4}", "\\\\$0");
что приводит к
Every person have\ue280 sum\ue340 ambition
Не уверен, что вы после этого, но, возможно, это что-то вроде этого:
static String toUnicode(String s) {
Matcher m = Pattern.compile("u(\\p{XDigit}{4})").matcher(s);
StringBuffer buf = new StringBuffer();
while(m.find())
m.appendReplacement(buf, "" + (char) Integer.parseInt(m.group(1), 16));
m.appendTail(buf);
return buf.toString();
}
(Обновлено в соответствии с axtavt очень хорошей альтернативой . Изготовление CW.)
Лучше версия обновления aioobe в:
String in = "Every person haveue280 sumue340 ambition";
Pattern p = Pattern.compile("u(\\p{XDigit}{4})");
Matcher m = p.matcher(in);
StringBuffer buf = new StringBuffer();
while(m.find())
m.appendReplacement(buf, "" + (char) Integer.parseInt(m.group(1), 16));
m.appendTail(buf);
String out = buf.toString();
Он не печатает Юникод ;-( – Novice
Вы имеете в виду вы хотите фактические символы Юникода, а не просто положить '\' перед юникодом нотации? – aioobe
yep. имеет ли это смысл? – Novice