一個安卓開發中常用的字串工具類
阿新 • • 發佈:2019-01-25
public class StringUtils { private StringUtils() { throw new AssertionError(); } /** * 密碼 * * @param pwd * @return */ public static boolean isPwd(String pwd) { int length = pwd.length(); boolean falg = false; if (length >= 6 && length <= 16) { falg = true; } else { falg = false; } return falg; } /** * 純數字 * * @param str * @return */ public static boolean isNumeric(String str) { for (int i = str.length(); --i >= 0; ) { if (!Character.isDigit(str.charAt(i))) { return false; } } return true; } /** * 純字母 * * @param * @return */ public static boolean isChar(String data) { boolean flag = false; for (int i = data.length(); --i >= 0; ) { char c = data.charAt(i); if (((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z'))) { flag = true; } else { flag = false; } } return flag; } /*數字+字母*/ public static boolean ispsd(String psd) { Pattern p = Pattern .compile("^([A-Za-z]|[0-9])+$"); Matcher m = p.matcher(psd); return m.matches(); } /** * 手機驗證 * * @param mobiles * @return */ public static boolean isMobileNO(String mobiles) { Pattern p = Pattern .compile("^((13[0-9])|(15[^4,\\D])|(14[57])|(17[0])|(17[7])|(18[0,0-9]))\\d{8}$"); Matcher m = p.matcher(mobiles); return m.matches(); } /** * 驗證郵政編碼 * * @param post * @return */ public static boolean checkPost(String post) { if (post.matches("[1-9]\\d{5}(?!\\d)")) { return true; } else { return false; } } /** * 計算金額 * * @param argStr * @return */ public static String getFloatDotStr(String argStr) { float arg = Float.valueOf(argStr); DecimalFormat fnum = new DecimalFormat("##0.00"); return fnum.format(arg); } /** * is null or its length is 0 or it is made by space * <p/> * <pre> * isBlank(null) = true; * isBlank(&quot;&quot;) = true; * isBlank(&quot; &quot;) = true; * isBlank(&quot;a&quot;) = false; * isBlank(&quot;a &quot;) = false; * isBlank(&quot; a&quot;) = false; * isBlank(&quot;a b&quot;) = false; * </pre> * * @param str * @return if string is null or its size is 0 or it is made by space, return * true, else return false. */ public static boolean isBlank(String str) { return (str == null || str.trim().length() == 0); } /** * is null or its length is 0 * <p/> * <pre> * isEmpty(null) = true; * isEmpty(&quot;&quot;) = true; * isEmpty(&quot; &quot;) = false; * </pre> * * @param str * @return if string is null or its size is 0, return true, else return * false. */ public static boolean isEmpty(CharSequence str) { return (str == null || str.length() == 0); } /** * get length of CharSequence * <p/> * <pre> * length(null) = 0; * length(\"\") = 0; * length(\"abc\") = 3; * </pre> * * @param str * @return if str is null or empty, return 0, else return * {@link CharSequence#length()}. */ public static int length(CharSequence str) { return str == null ? 0 : str.length(); } /** * null Object to empty string * <p/> * <pre> * nullStrToEmpty(null) = &quot;&quot;; * nullStrToEmpty(&quot;&quot;) = &quot;&quot;; * nullStrToEmpty(&quot;aa&quot;) = &quot;aa&quot;; * </pre> * * @param str * @return */ public static String nullStrToEmpty(Object str) { return (str == null ? "" : (str instanceof String ? (String) str : str .toString())); } /** * capitalize first letter * <p/> * <pre> * capitalizeFirstLetter(null) = null; * capitalizeFirstLetter("") = ""; * capitalizeFirstLetter("2ab") = "2ab" * capitalizeFirstLetter("a") = "A" * capitalizeFirstLetter("ab") = "Ab" * capitalizeFirstLetter("Abc") = "Abc" * </pre> * * @param str * @return */ public static String capitalizeFirstLetter(String str) { if (isEmpty(str)) { return str; } char c = str.charAt(0); return (!Character.isLetter(c) || Character.isUpperCase(c)) ? str : new StringBuilder(str.length()) .append(Character.toUpperCase(c)) .append(str.substring(1)).toString(); } /** * encoded in utf-8 * <p/> * <pre> * utf8Encode(null) = null * utf8Encode("") = ""; * utf8Encode("aa") = "aa"; * utf8Encode("啊啊啊啊") = "%E5%95%8A%E5%95%8A%E5%95%8A%E5%95%8A"; * </pre> * * @param str * @return * @throws UnsupportedEncodingException if an error occurs */ public static String utf8Encode(String str) { if (!isEmpty(str) && str.getBytes().length != str.length()) { try { return URLEncoder.encode(str, "UTF-8"); } catch (UnsupportedEncodingException e) { throw new RuntimeException( "UnsupportedEncodingException occurred. ", e); } } return str; } /** * encoded in utf-8, if exception, return defultReturn * * @param str * @param defultReturn * @return */ public static String utf8Encode(String str, String defultReturn) { if (!isEmpty(str) && str.getBytes().length != str.length()) { try { return URLEncoder.encode(str, "UTF-8"); } catch (UnsupportedEncodingException e) { return defultReturn; } } return str; } /** * get innerHtml from href * <p/> * <pre> * getHrefInnerHtml(null) = "" * getHrefInnerHtml("") = "" * getHrefInnerHtml("mp3") = "mp3"; * getHrefInnerHtml("&lt;a innerHtml&lt;/a&gt;") = "&lt;a innerHtml&lt;/a&gt;"; * getHrefInnerHtml("&lt;a&gt;innerHtml&lt;/a&gt;") = "innerHtml"; * getHrefInnerHtml("&lt;a&lt;a&gt;innerHtml&lt;/a&gt;") = "innerHtml"; * getHrefInnerHtml("&lt;a href="baidu.com"&gt;innerHtml&lt;/a&gt;") = "innerHtml"; * getHrefInnerHtml("&lt;a href="baidu.com" title="baidu"&gt;innerHtml&lt;/a&gt;") = "innerHtml"; * getHrefInnerHtml(" &lt;a&gt;innerHtml&lt;/a&gt; ") = "innerHtml"; * getHrefInnerHtml("&lt;a&gt;innerHtml&lt;/a&gt;&lt;/a&gt;") = "innerHtml"; * getHrefInnerHtml("jack&lt;a&gt;innerHtml&lt;/a&gt;&lt;/a&gt;") = "innerHtml"; * getHrefInnerHtml("&lt;a&gt;innerHtml1&lt;/a&gt;&lt;a&gt;innerHtml2&lt;/a&gt;") = "innerHtml2"; * </pre> * * @param href * @return <ul> * <li>if href is null, return ""</li> * <li>if not match regx, return source</li> * <li>return the last string that match regx</li> * </ul> */ public static String getHrefInnerHtml(String href) { if (isEmpty(href)) { return ""; } String hrefReg = ".*<[\\s]*a[\\s]*.*>(.+?)<[\\s]*/a[\\s]*>.*"; Pattern hrefPattern = Pattern .compile(hrefReg, Pattern.CASE_INSENSITIVE); Matcher hrefMatcher = hrefPattern.matcher(href); if (hrefMatcher.matches()) { return hrefMatcher.group(1); } return href; } /** * process special char in html * <p/> * <pre> * htmlEscapeCharsToString(null) = null; * htmlEscapeCharsToString("") = ""; * htmlEscapeCharsToString("mp3") = "mp3"; * htmlEscapeCharsToString("mp3&lt;") = "mp3<"; * htmlEscapeCharsToString("mp3&gt;") = "mp3\>"; * htmlEscapeCharsToString("mp3&amp;mp4") = "mp3&mp4"; * htmlEscapeCharsToString("mp3&quot;mp4") = "mp3\"mp4"; * htmlEscapeCharsToString("mp3&lt;&gt;&amp;&quot;mp4") = "mp3\<\>&\"mp4"; * </pre> * * @param source * @return */ public static String htmlEscapeCharsToString(String source) { return StringUtils.isEmpty(source) ? source : source .replaceAll("&lt;", "<").replaceAll("&gt;", ">") .replaceAll("&amp;", "&").replaceAll("&quot;", "\""); } /** * transform half width char to full width char * <p/> * <pre> * fullWidthToHalfWidth(null) = null; * fullWidthToHalfWidth("") = ""; * fullWidthToHalfWidth(new String(new char[] {12288})) = " "; * fullWidthToHalfWidth("!"#$%&) = "!\"#$%&"; * </pre> * * @param s * @return */ public static String fullWidthToHalfWidth(String s) { if (isEmpty(s)) { return s; } char[] source = s.toCharArray(); for (int i = 0; i < source.length; i++) { if (source[i] == 12288) { source[i] = ' '; // } else if (source[i] == 12290) { // source[i] = '.'; } else if (source[i] >= 65281 && source[i] <= 65374) { source[i] = (char) (source[i] - 65248); } else { source[i] = source[i]; } } return new String(source); } /** * transform full width char to half width char * <p/> * <pre> * halfWidthToFullWidth(null) = null; * halfWidthToFullWidth("") = ""; * halfWidthToFullWidth(" ") = new String(new char[] {12288}); * halfWidthToFullWidth("!\"#$%&) = "!"#$%&"; * </pre> * * @param s * @return */ public static String halfWidthToFullWidth(String s) { if (isEmpty(s)) { return s; } char[] source = s.toCharArray(); for (int i = 0; i < source.length; i++) { if (source[i] == ' ') { source[i] = (char) 12288; // } else if (source[i] == '.') { // source[i] = (char)12290; } else if (source[i] >= 33 && source[i] <= 126) { source[i] = (char) (source[i] + 65248); } else { source[i] = source[i]; } } return new String(source); } /** * 刪除String最後一個字元 * * @param text * @return */ public static String trimLast(String text) { String result = ""; result = text.substring(0, text.length() - 1); return result; } public static String noZero(int number) { if (number == 0) { return ""; } else { return String.valueOf(number); } } public static void setPricePoint(final EditText editText) { editText.addTextChangedListener(new TextWatcher() { @Override public void onTextChanged(CharSequence s, int start, int before, int count) { String srt = s.toString(); if (srt.contains(".")) { String rex = "[0-9]{0,9}\\.{1}[0-9]{0,2}"; Pattern pattern = Pattern.compile(rex); if (pattern.matches(rex, srt)) { if (s.length() - 1 - s.toString().indexOf(".") > 2) { s = s.toString().subSequence(0, s.toString().indexOf(".") + 3); editText.setText(s); editText.setSelection(s.length()); } String strs[] = srt.split("\\."); if (strs != null && strs.length > 0) { if (strs[0].length() > 8) { String newStr = strs[0].substring(0, strs[0].length() - 1); editText.setText(newStr + "." + strs[1]); editText.setSelection(newStr.length()); } System.out.println("strs==" + strs.length); } } else { if (srt.length() != 0) { if (srt.length() == editText.getSelectionEnd()) { srt = srt.substring(0, srt.length() - 1); editText.setText(srt); editText.setSelection(srt.length()); } else { srt = srt.substring(0, editText.getSelectionEnd() - 1); editText.setText(srt); editText.setSelection(srt.length()); } } } } else { if (srt.length() > 8) { if (srt.length() != 0) { srt = srt.substring(0, srt.length() - 1); editText.setText(srt); editText.setSelection(srt.length()); } } } if (s.toString().trim().substring(0).equals(".")) { s = "0" + s; editText.setText(s); editText.setSelection(2); } if (s.toString().startsWith("0") && s.toString().trim().length() > 1) { if (!s.toString().substring(1, 2).equals(".")) { editText.setText(s.subSequence(0, 1)); editText.setSelection(1); return; } } } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void afterTextChanged(Editable s) { // TODO Auto-generated method stub } }); } }