zoukankan      html  css  js  c++  java
  • 【Java】截取字符串

    /**
     * @Title: SubStringTest.java <br/>
     * @date Mar 27, 2016 <br/>
     */
     
    import java.io.UnsupportedEncodingException;
     
    /**
     * @Title: SubStringSubmitted <br/>
     * @date Mar 27, 2016 <br/>
     */
    public class SubStringTest {
     
        /**
         * @Title: main<br/>
         * @Time: Mar 27, 2016 10:39:11 PM <br/>
         */
     
        private static String myStr = "农业银3df行个人网上银行账户密码指的是登录时的密码,支付密"
                + "码指的是在进行网上支付或者是转账时使用的密码,多数银行二个密码是一样的。"           
                + "2、取款密码:指的是在ATM机、柜台等地方取款的密码,一般是6位数纯数字组合。3、"
                + "交易密码:指的是网银登录或者是支付密码,是在网上交易的时候使用的密码,一般为数字和密码1的1,组合";
     
        private static String myStrShort = "农业银3df";
        private static String result1;
        private static int length = 19;
     
        public static void main(String[] args) {
            String result3 = subTextStringFromLast(myStr, length);
     
            try {
                System.out.println(String.format("结果 result3 是 %s,字节数为 %s",
                        result3, result3.getBytes("UTF-8").length));
     
                String result4 = subTextString(myStr, length);
     
                System.out.println(String.format("结果 result4 是 %s,字节数为 %s",
                        result4, result4.getBytes("UTF-8").length));
     
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            }
        }
     
        /**
         * @Title: subTextStringFromLast<br/>
         * @Description: 默认编码方式为UTF-8,从后向前截取。 <br/>
         * @Time: Mar 27, 2016 9:21:20 AM <br/>
         */
        public static String subTextStringFromLast(String str, int len) {
            if (str.length() < Math.floor(len / 3)) {
                return str;
            }
            int count = 0;
            StringBuffer sb = new StringBuffer();
            String[] ss = str.split("");
            // 这部分的结果--数字和字母是1,而中文是3(我的工程是UTF-8编码,GBK的是2)
            for (int i = ss.length - 1; i > -1; i--) {
                count += ss[i].getBytes().length > 1 ? 3 : 1;
                if (count > len) {
                    break;
                }
                sb.append(ss[i]);
            }
            return (sb.toString().length() < str.length()) ?
                    sb.reverse().toString() : str;
        }
     
      public static String subTextStringFromLast1(String str, int len) {
              if (str.length() < Math.floor(len / 3)) {
                  return str;
             }
              int count = 0;
             StringBuffer sb = new StringBuffer();
             String[] ss = str.split( "");
              // 这部分的结果--数字和字母是1,而中文是3(我的工程是UTF-8编码,GBK的是2)
              for (int i = ss.length - 1; i > -1; i--) {
                 count += ss[i].getBytes(). length > 1 ? 3 : 1;
                  if (count > len) {
                      break;
                 }
                 sb.append(ss[i]);
              }
              return sb.reverse().toString();
        }
     
        /**
         * @Title: subTextString<br/>
         * @Description: 默认编码方式为UTF-8,从前向后截取。 <br/>
         * @Time: Mar 27, 2016 9:19:55 AM <br/>
         */
        public static String subTextString(String str, int len) {
            if (str.length() <= Math.floor(len / 3)) {
                return str;
            }
            int count = 0;
            StringBuffer sb = new StringBuffer();
            String[] ss = str.split("");
            // 这部分的结果--数字和字母是1,而中文是3(我的工程是UTF-8编码,GBK的是2)
            for (int i = 0; i < ss.length; i++) {
                count += ss[i].getBytes().length > 1 ? 3 : 1;
                if (count > len) {
                    break;
                }
                sb.append(ss[i]);
            }
            // 不需要显示...的可以直接return sb.toString();
            return (sb.toString().length() < str.length()) ?
                    sb.append("...").toString() : str;
        }
     
    }
     
     

     
  • 相关阅读:
    还在使用golang 的map 做Json编码么?
    Golang 性能测试(2) 性能分析
    golang 性能测试 (1) 基准性能测试
    消息队列 NSQ 源码学习笔记 (五)
    消息队列 NSQ 源码学习笔记 (四)
    消息队列 NSQ 源码学习笔记 (三)
    消息队列 NSQ 源码学习笔记 (二)
    消息队列 NSQ 源码学习笔记 (一)
    你不知道的空格
    Supervisor 使用和进阶4 (Event 的使用)
  • 原文地址:https://www.cnblogs.com/east7/p/7246875.html
Copyright © 2011-2022 走看看