java中截取指定字符串长度函数

     /*
     * content内容过长可能会导致xml文件过大,加载太慢。
     * 但从seo的角度考虑全部输出有利于搜索引擎,但一般情况下内容也不会太多
     * 为防止空格换行css无法控制撑大页面,用正则表达式替换掉空格,所以截取前面100个字符,页面显示的内容多少用css控制

      *zdz的作品,流风的作品
     */
     //str.trim().replaceAll("\s+"," ");
     String contenttemp = rs.getString(contentName).trim().replaceAll("\s+","");
     //NpfDebug.print(contenttemp.length());
     if(contenttemp.length()>100){//如果长度大于100则截取
      contenttemp = contenttemp.substring(0, 100);
      //NpfDebug.print("contenttemp.length()>100 ? "+contenttemp.length()+"n"+contentStr);
     }
     rsbody.append(beforCONTENT);
     rsbody.append(contenttemp);
     rsbody.append(endCONTENT);

----------------------

 

开发中经常遇到,字符串过长,无法完全显示的问题

这时候就需要截取我们所需要的长度,后面显示省略号或其他字符。

由于中文字符占两个字节,而英文字符占用一个字节,所以,单纯地判断字符数,效果往往不尽如人意

下面的方法通过判断字符的类型来进行截取,效果还算可以:)

如果大家有其他的解决方法欢迎贴出来,共同学习:)
**********************************************************************

 代码如下 复制代码

private String str;
private int counterOfDoubleByte;
private byte b[];
/**
* 设置需要被限制长度的字符串
* @param str 需要被限制长度的字符串
*/
public void setLimitLengthString(String str){
   this.str = str;
}
/**
* @param len 需要显示的长度(<font color="red">注意:长度是以byte为单位的,一个汉字是2个byte</font>)
* @param symbol 用于表示省略的信息的字符,如“...”,“>>>”等。
* @return 返回处理后的字符串
*/
public String getLimitLengthString(int len, String symbol) throws UnsupportedEncodingException {
   counterOfDoubleByte = 0;
   b = str.getBytes("GBK");
   if(b.length <= len)
     return str;
   for(int i = 0; i < len; i++){
     if(b[i] < 0)
       counterOfDoubleByte++;
   }

   if(counterOfDoubleByte % 2 == 0)
     return new String(b, 0, len, "GBK") + symbol;
   else
     return new String(b, 0, len - 1, "GBK") + symbol;
}

 

-------------------

/** *//**
    * 按字节长度截取字符串
    * @param str 将要截取的字符串参数
    * @param toCount 截取的字节长度
    * @param more 字符串末尾补上的字符串
    * @return 返回截取后的字符串
    */
   public String substring(String str, int toCount, String more) ...{
     int reInt = 0;
     String reStr = "";
     if (str == null)
       return "";
     char[] tempChar = str.toCharArray();
     for (int kk = 0; (kk < tempChar.length && toCount > reInt); kk++) ...{
       String s1 = str.valueOf(tempChar[kk]);
       byte[] b = s1.getBytes();
       reInt += b.length;
       reStr += tempChar[kk];
     }
     if (toCount == reInt || (toCount == reInt - 1))
       reStr += more;
     return reStr;
   }

=================

/**
     * 取字符串的前toCount个字符
     *
     * @param str 被处理字符串
     * @param toCount 截取长度
     * @param more 后缀字符串
     * @version 2004.11.24
     * @author zhulx
     * @return String
     */
    public static String substring(String str, int toCount,String more)
    {
      int reInt = 0;
      String reStr = "";
      if (str == null)
        return "";
      char[] tempChar = str.toCharArray();
      for (int kk = 0; (kk < tempChar.length && toCount > reInt); kk++) {
        String s1 = str.valueOf(tempChar[kk]);
        byte[] b = s1.getBytes();
        reInt += b.length;
        reStr += tempChar[kk];
      }
      if (toCount == reInt || (toCount == reInt - 1))
        reStr += more;
      return reStr;
    }

------------------------

得到字符串真实长度和取固定长度的字符串函数

// 截取固定长度子字符串 sSource为字符串iLen为长度

 代码如下 复制代码
function getInterceptedStr(sSource, iLen)
{
    if(sSource.replace(/[^x00-xff]/g,"xx").length <= iLen)
    {
        return sSource;
    }
    var ELIDED = "";
    
    var str = "";
    var l = 0;
    var schar;
    for(var i=0; schar=sSource.charAt(i); i++)
    {
        str += schar;
        l += (schar.match(/[^x00-xff]/) != null ? 2 : 1);
        if(l >= iLen - ELIDED.length)
        {
            break;
        }
    }
    str += ELIDED;
    
    return str;
}
时间: 2024-11-30 05:38:13

java中截取指定字符串长度函数的相关文章

关于JAVA中截取部分字符串小程序

问题描述 我想通过JAVA从一个TXT文档中截取所有id=*&中的*,就是以id=开始以&结束中间的*,*这个东西是一共24位也可能少于24位,我想把截取出来的东西,一一输出到另一个TXT中,或者打印出来.请大家帮助,必有重谢,简单JAVA程序实现不利用框架 解决方案 解决方案二:用正则匹配........

字符串长度函数strlen和mb

 在php中常见的计算字符串长度的函数有:strlen和mb_strlen.当字符全是英文字符的时候,两者是一样.这里主要比较一下,中英文混排的时候,两个计算结果. 在PHP中,strlen与mb_strlen是求字符串长度的函数,但是对于一些初学者来说,如果不看手册,也许不太清楚其中的区别. 下面通过例子,讲解这两者之间的区别. 先看例子: 1 <?php  2 //测试时文件的编码方式要是UTF8  3 $str='中文a字1符';  4 echo strlen($str).'<br>

php中处理汉字字符串长度:strlen和mb_strlen

本文转自IT摆渡网欢迎转载,请标明出处 更多php文章请阅读 php问题解决 如这个例子: <html> <meta charset="utf-8"> <body> <?php $name="鸣人"; print "姓名的长度为:".strlen($name); ?> </body> </html> 这个代码的输出结果是:姓名的长度为:6 先探讨一下为什么会出现这个问题:PH

java学习笔记之字符串查找函数

java中查找一个字符串是否包含一个字符,或者一段字符串java.lang.String indexOf方法  代码如下 复制代码 package com.java.lang;   public class StringX {    /**   * @param args   */  public static void main(String[] args) {   java.lang.String a = "my name is yuexiaosheng,my blog is java-er

JavaScript中常见的字符串操作函数及用法汇总_javascript技巧

本文实例总结了JavaScript中常见的字符串操作函数及用法.分享给大家供大家参考.具体分析如下: 最近几次参加前端实习生招聘的笔试,发现很多笔试题都会考到字符串的处理,比方说去哪儿网笔试题.淘宝的笔试题等.如果你经常参加笔试或者也是一个过来人,相信你也跟我一样,发现字符串的处理是前端招聘过程中最常见的题型之一.这些题有一个特点,站在考官的角度去考虑,它考的不是你会不会,而是你能不能在不借用XX手册或者XX指南再或者百度谷歌的情况下,用比较简洁的方式写出答案来.可惜的是,很多开发人员,当然我也

字符串长度函数strlen和mb_strlen的区别示例介绍_php技巧

在php中常见的计算字符串长度的函数有:strlen和mb_strlen.当字符全是英文字符的时候,两者是一样.这里主要比较一下,中英文混排的时候,两个计算结果. 在PHP中,strlen与mb_strlen是求字符串长度的函数,但是对于一些初学者来说,如果不看手册,也许不太清楚其中的区别. 下面通过例子,讲解这两者之间的区别. 先看例子: <?php //测试时文件的编码方式要是UTF8 $str='中文a字1符'; echo strlen($str).'<br>';//14 echo

java中比较未知字符串所包好的内容

问题描述 java中比较未知字符串所包好的内容 比如说我有两个词.中国 和国人,(这个字符串是未知的,我只是举例),怎么判断这两个字符串中 都包含相同的内容,在上述例子中相同的内容就是"国"?最好不用数组,求大神指导! 解决方案 public static int[][] LCS(String str1, String str2) { int[][] opt = new int[str2.length() + 1][str1.length() + 1]; for (int i = 0;

cakephp中截取中文字符串?

cakephp教程中截取中文字符串? Text->truncate方法有3个参数: $text:需要截取的字符串 $length:需要截取的长度,默认是截取100个字符 $options:数组参数.ending表示在截取后的字符串结尾加上ending字符串:exact如果是false的话则不会截断word:html如果是true的话则不会截断html tag 下面的代码演示了如何使用tuncate方法: view sourceprint?echo $this->Text->truncat

基于Java中Math类的常用函数总结_java

Java中比较常用的几个数学公式的总结: //取整,返回小于目标函数的最大整数,如下将会返回-2 Math.floor(-1.8): //取整,返回发育目标数的最小整数 Math.ceil() //四舍五入取整 Math.round() //计算平方根 Math.sqrt() //计算立方根 Math.cbrt() //返回欧拉数e的n次幂 Math.exp(3); //计算乘方,下面是计算3的2次方 Math.pow(3,2); //计算自然对数 Math.log(); //计算绝对值 Mat