• 【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;
        }
     
    }
     
     

     
  • 相关阅读:
    万能转换器boost::lexical_cast
    6.1.5 文本文件与二进制文件
    HDU4002 Find the maximum [数论]
    HDU4001 To Miss Our Children Time [DP]
    HDU3247 Resource Archiver [AC自动机+DP]
    HDU2457 DNA repair [AC自动机+DP]
    HDU2825 Wireless Password [AC自动机+压缩DP]
    ZOJ3228 Searching the String [AC自动机]
    HDU4003 Find Metal Mineral [树形DP]
    ZOJ3494 BCD Code [AC自动机+DP]
  • 原文地址:https://www.cnblogs.com/east7/p/7246875.html
Copyright © 2020-2023  润新知