diff --git a/src/main/java/com/sjhy/plugin/tool/GlobalTool.java b/src/main/java/com/sjhy/plugin/tool/GlobalTool.java index e6e44ab8ba39e8ff7d051c85b99ee9ebec355719..ee39b84cb8936bf6cc63ff019f07f62019821fb8 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 1821840e1f165a8d4c01dbefa41a294b44437b52..3be45ec09a24c1810dffe79fce276445d02f7447 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 0000000000000000000000000000000000000000..19a9a618f8f2feb3099b738fc3e4306fd12d6d27 --- /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); + } + +}