【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;
}
}
讀后有收獲,小禮物走一走,請作者喝咖啡。
Buy me a coffee. ?Get red packets.作者:樓蘭胡楊
本文版權歸作者和博客園共有,歡迎轉載,但請注明原文鏈接,并保留此段聲明,否則保留追究法律責任的權利。

浙公網安備 33010602011771號