首页 > 代码库 > 从后向前截取指定长度的字符串
从后向前截取指定长度的字符串
/**
* @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;
}
}
从后向前截取指定长度的字符串
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。