From b1ff109aeb30108c7e4185a84a64fbb34abe5f45 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 24 Jun 2020 10:57:37 +0800 Subject: [PATCH] 1. CODE_PAGE 和 NO_BREAK_SPACE处理优化 --- build.gradle | 2 +- src/main/java/com/taover/util/UtilString.java | 106 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------ 2 files changed, 95 insertions(+), 13 deletions(-) diff --git a/build.gradle b/build.gradle index b4924b4..6fcf631 100644 --- a/build.gradle +++ b/build.gradle @@ -59,7 +59,7 @@ uploadArchives { authentication(userName: NEXUS_USERNAME, password: NEXUS_PASSWORD) } pom.project { - version '1.1.107' + version '1.1.110' artifactId ARTIFACT_Id groupId GROUP_ID packaging TYPE diff --git a/src/main/java/com/taover/util/UtilString.java b/src/main/java/com/taover/util/UtilString.java index 4c8db7e..51a47b5 100644 --- a/src/main/java/com/taover/util/UtilString.java +++ b/src/main/java/com/taover/util/UtilString.java @@ -8,6 +8,11 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; public class UtilString { + public static final byte[] CODE_PAGE_BYTE_ARR = new byte[]{-30, -128, -83}; + public static final String CODE_PAGE = new String(CODE_PAGE_BYTE_ARR); + public static final byte[] NO_BREAK_SPACE_BYTE_ARR = new byte[]{-62, -96}; + public static final String NO_BREAK_SPACE = new String(NO_BREAK_SPACE_BYTE_ARR); + public static String trimByRegexS(String source){ return trimLeftByRegexS(trimRightByRegexS(source)); } @@ -20,8 +25,8 @@ public class UtilString { return ""; } - source = replaceCodePage(source, ""); - source = replaceNoBreakBackspace(source, ""); + source = trimLeftCodePage(source); + source = trimLeftNoBreakBackspace(source); Pattern pattern = Pattern.compile("\\S"); int startIndex = -1; for(int i=0; i=0; --i){ @@ -96,18 +101,94 @@ public class UtilString { } return ""; } + + public static String trimCodePage(String data) { + return trimLeftCodePage(trimRightCodePage(data)); + } + + public static String trimLeftCodePage(String data) { + return trimLeftStrByEquals(data, CODE_PAGE); + } + + public static String trimRightCodePage(String data) { + return trimRightStrByEquals(data, CODE_PAGE); + } + + public static String trimNoBreakBackspace(String data) { + return trimLeftNoBreakBackspace(trimRightNoBreakBackspace(data)); + } - @Deprecated - public static String trimCodePage(String data){ - return data.replaceAll(new String(new byte[]{-30, -128, -83}), ""); + public static String trimLeftNoBreakBackspace(String data) { + return trimLeftStrByEquals(data, NO_BREAK_SPACE); + } + + public static String trimRightNoBreakBackspace(String data) { + return trimRightStrByEquals(data, NO_BREAK_SPACE); + } + + public static String trimLeftStrByRegex(String data, Pattern trimPattern) { + /** + * TO DO + */ + return null; + } + + public static String trimRightStrByRegex(String data, Pattern trimPattern) { + /** + * TO DO + */ + return null; + } + + public static String trimLeftStrByEquals(String data, String trimStr) { + if(data == null){ + return null; + } + if(data.equals("")){ + return ""; + } + if(trimStr == null || trimStr.isEmpty()) { + return data; + } + int subIndexBegin = 0; + int trimStrLen = trimStr.length(); + int dataLen = data.length(); + while((subIndexBegin+trimStrLen) <= dataLen) { + if(!trimStr.equals(data.substring(subIndexBegin, subIndexBegin+trimStrLen))) { + break; + } + subIndexBegin += trimStrLen; + } + return data.substring(subIndexBegin); + } + + public static String trimRightStrByEquals(String data, String trimStr) { + if(data == null){ + return null; + } + if(data.equals("")){ + return ""; + } + if(trimStr == null || trimStr.isEmpty()) { + return data; + } + int subIndexEnd = data.length(); + int trimStrLen = trimStr.length(); + while((subIndexEnd - trimStrLen) >= 0) { + if(!trimStr.equals(data.substring(subIndexEnd-trimStrLen, subIndexEnd))) { + break; + } + subIndexEnd -= trimStrLen; + } + return data.substring(0, subIndexEnd); } public static String replaceCodePage(String data, String replaceStr){ - return data.replaceAll(new String(new byte[]{-30, -128, -83}), replaceStr); + return data.replaceAll(CODE_PAGE, replaceStr); } public static String replaceNoBreakBackspace(String data, String replaceStr) { - return data.replaceAll(new String(new byte[] {-62, -96}), replaceStr); + return data.replaceAll(NO_BREAK_SPACE, replaceStr); } /** @@ -284,8 +365,9 @@ public class UtilString { String trim = " sd ds sd "; String trimLeft = " ds sd "; String trimRight = " ds es &**^"; - System.out.println(trimByRegexW(trim)); - System.out.println(trimLeftByRegexW(trimLeft)); - System.out.println(trimRightByRegexW(trimRight)); + System.out.println(trimByRegexS(trim)); + System.out.println(trimLeftByRegexS(trimLeft)); + System.out.println(trimRightByRegexS(trimRight)); + System.out.println(trimRightStrByEquals("asddasd", "asd")); } } \ No newline at end of file -- libgit2 0.21.2