从后向前截取指定长度的字符串

/**

* @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;

}

}


时间: 2025-01-07 02:27:05

从后向前截取指定长度的字符串的相关文章

asp.net截取指定长度的字符串内容

1 /// <summary> 2 /// 用于截取指定长度的字符串内容 3 /// </summary> 4 /// <param name="sString">用于截取的字符串</param> 5 /// <param name="nLength">截取字符串的长度</param> 6 /// <returns>返回截取后的字符串</returns> 7 public

截取指定长度的字符串

/* * 函数说明:截取指定长度的字符串 * utf-8专用 汉字和大写字母长度算1,其它字符长度算0.5 * * @param string $str 原字符串 * @param int $len 截取长度 * @param string $etc 省略字符... * @return string 截取后的字符串 */ if(!function_exists('ReStrLen')) { function ReStrLen($str, $len=10, $etc='...') { $restr

C#截取指定长度中英文字符串方法 (修改)

public static string GetFirstString(string stringToSub, int length) { Regex regex = new Regex("[/u4e00-/u9fa5]+", RegexOptions.Compiled); char[] stringChar = stringToSub.ToCharArray(); StringBuilder sb = new StringBuilder(); int nLength = 0; for

sql中从指定位置截取指定长度字符串

1. 字符串函数应用 --从指定索引截取指定长度的字符串 SELECT substring('abcdefg',2,5) --获取字符串中指定字符的索引(从1开始) select charindex(',','ab,cdefg') --实际应用中的语句 select proId,color,substring(FacePath,0,charindex(',',FacePath)) as FacePath from proselect where id=1000000 2. 日期函数应用 --获取

截取指定长度字节数后的字符串(Java方法实例,注:同样思路js也适用)

可能之前是习惯了上网查看其他人的资料,当我遇到这样的问题的时候,我第一时间想到的就是上网查个现成的方法直接用:可是查阅网上各大论坛以及其他资料之后,发现大部分人都是照搬其他人的,这种情况很严重,而且个人感觉很不利于个人技术的成长:当然更重要的原因是,我感觉网上的大部分方法都把问题给复杂化了,无论是用js方法截取还是通过封装Java类,都感觉繁琐了些:为此我自己写了个相对来说较为简单的方法,其实很简单的思路和方法就能实现,下面奉上我自己的方法,希望大家多多指正不足之处(支持全角输入的字符和汉字等,

【转载】C# 字符串截取指定长度的中文字符--精点

通常,一个中文会占两个字节的空间.很多语言里,一个中文字符就算是2个字符长度. 但在C#中,string里包含的中文字符只占一个字符长度.这就导致很多时候,使用string.SubString(int startIndex,int length)方法来截取字符会错位. 最近由于工作原因,会截取指定长度的字符来使用.但是在文档里,1个中文是2个长度来计算.刚开始还只是以为文档错误,后来才知道是由于C#的差异造成的. 刚开始,是直接到网上找算法,但是找到的算法,基本思路都是挨个字符判断(根据ASCI

jQuery实现的截取指定长度字符串代码

jQuery实现的截取指定长度字符串代码:截取字符串是常有的操作,可以说非常的频繁,几乎任何有新闻列表形式的站点都会有此操作,下面就是一段能够实现此功能的代码实例,直接套用就可以了,希望能够大家带来一定帮助.代码如下: <!DOCTYPE html> <html> <head> <meta charset=utf-8 /> <title>批量注册事件处理函数-蚂蚁部落</title> <style type="text

jQuery截取指定长度字符串

例子,截取字符串代码. <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>jQuery截取字符串操作---www.jbxue.com</title> <script type="text/javascript"

截取指定长度字符串长度代码实例

截取指定长度字符串长度代码实例:字符串的长度在默认状态下往往不能够满足需求,比如新闻列表新闻标题的长度,如果过长往往会引起换行,影响美观度,进而一项用户体验,所以需要根据需要截取字符串长度,下面就分享两端能够实现此功能的代码,希望对大家有所帮助.代码示例如下:一.CSS方式:html代码: <div class="cutText">蚂蚁部落欢迎您,只有奋斗才会有美好的明天!</div> CSS代码: .cutText{ width:150px; height:2