从后向前截取指定长度的字符串
Posted 楼兰胡杨
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从后向前截取指定长度的字符串相关的知识,希望对你有一定的参考价值。
/**
* @Title: SubStringSubmitted.java <br/>
* @Package_name: substringlearning <br/>
* @date Mar 27, 2016 <br/>
*/
import java.io.UnsupportedEncodingException;
/**
* @Title: SubStringSubmitted <br/>
* @date Mar 27, 2016 <br/>
*/
public class SubStringSubmitted {
/**
* @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 = 1; 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;
}
}
以上是关于从后向前截取指定长度的字符串的主要内容,如果未能解决你的问题,请参考以下文章