From d593f1371092850162560ab01a23f495368e33ff Mon Sep 17 00:00:00 2001 From: czb <398061026@qq.com> Date: Mon, 11 Nov 2019 09:52:20 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=EF=BC=9A$tool=E5=B7=A5?= =?UTF-8?q?=E5=85=B7=E4=B8=AD=E5=A2=9E=E5=8A=A0toUnicode(String[,=20Boolea?= =?UTF-8?q?n])=E6=96=B9=E6=B3=95=EF=BC=8C=E7=94=A8=E4=BA=8E=E5=B0=86?= =?UTF-8?q?=E5=AD=97=E7=AC=A6=E4=B8=B2=E8=BD=AC=E6=8D=A2=E4=B8=BAUNICODE?= =?UTF-8?q?=E7=BC=96=E7=A0=81=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/sjhy/plugin/tool/GlobalTool.java | 48 +++++++++++++++++++ .../description/templateDescription.html | 1 + .../com/sjhy/plugin/tool/ToUnicodeTest.java | 22 +++++++++ 3 files changed, 71 insertions(+) create mode 100644 src/test/java/com/sjhy/plugin/tool/ToUnicodeTest.java diff --git a/src/main/java/com/sjhy/plugin/tool/GlobalTool.java b/src/main/java/com/sjhy/plugin/tool/GlobalTool.java index e6e44ab..ee39b84 100644 --- a/src/main/java/com/sjhy/plugin/tool/GlobalTool.java +++ b/src/main/java/com/sjhy/plugin/tool/GlobalTool.java @@ -277,6 +277,54 @@ public class GlobalTool extends NameUtils { } } + // 中文及中文符号正则表达式 + public static final String CHINESE_REGEX = "[\u4e00-\u9fa5–—‘’“”…、。〈〉《》「」『』【】〔〕!(),.:;?]"; + + /** + * 字符串转unicode编码(默认只转换CHINESE_REGEX匹配到的字符) + * @param str 字符串 + * @return 转码后的字符串 + */ + public String toUnicode(String str) { + return toUnicode(str, false); + } + + /** + * 字符串转unicode编码 + * @param str 字符串 + * @param transAll true转换所有字符,false只转换CHINESE_REGEX匹配到的字符 + * @return 转码后的字符串 + */ + public String toUnicode(String str, Boolean transAll) { + if (null == str) { + return null; + } + if (str.length() <= 0) { + return null; + } + if (null == transAll) { + transAll = false; + } + + StringBuffer sb = new StringBuffer(); + if (transAll) { + for (char c : str.toCharArray()) { + sb.append(String.format("\\u%04x", (int) c)); + } + } else { + for (char c : str.toCharArray()) { + // 中文范围 + if (String.valueOf(c).matches(CHINESE_REGEX)) { + sb.append(String.format("\\u%04x", (int) c)); + } else { + sb.append(c); + } + } + } + + return sb.toString(); + } + /** * 远程调用服务 * diff --git a/src/main/resources/description/templateDescription.html b/src/main/resources/description/templateDescription.html index 1821840..3be45ec 100644 --- a/src/main/resources/description/templateDescription.html +++ b/src/main/resources/description/templateDescription.html @@ -57,6 +57,7 @@ service(String serviceName, Object... param)远程服务调用 parseJson(String) 将字符串转Map对象 toJson(Object, Boolean) 将对象转json对象,Boolean:是否格式化json,不填时为不格式化。 + toUnicode(String, Boolean) 将String转换为unicode形式,Boolean:是否转换所有符号,不填时只转换中文及中文符号。 $time currTime(String format) 获取当前时间,指定时间格式(默认:yyyy-MM-dd HH:mm:ss) $generateService diff --git a/src/test/java/com/sjhy/plugin/tool/ToUnicodeTest.java b/src/test/java/com/sjhy/plugin/tool/ToUnicodeTest.java new file mode 100644 index 0000000..19a9a61 --- /dev/null +++ b/src/test/java/com/sjhy/plugin/tool/ToUnicodeTest.java @@ -0,0 +1,22 @@ +package com.sjhy.plugin.tool; + +import org.junit.Assert; +import org.junit.Test; + +/** + * ToUnicodeTest 类 + * + * @author czb 2019/11/11 9:43 + * @version 1.0 + **/ +public class ToUnicodeTest { + + @Test + public void toUnicode() { + GlobalTool tool = GlobalTool.getInstance(); + String out; + System.out.println(out = tool.toUnicode("金融机构,Finance organization{0},!")); + Assert.assertEquals("\\u91d1\\u878d\\u673a\\u6784\\uff0cFinance organization{0},\\uff01", out); + } + +} -- Gitee