比如我要截取4个汉字长度的字符
123456   //如果是纯数字的话应该截取  "1234“
中文测试    //如果是中文的话截取 “中文"
字符串中可能还含有空格等其他符号,如何才能使截取字符时不出现乱码?

解决方案 »

  1.   

    直接用substring()就可以
    String str = "ABC中文abc";
    str.length() = 8;
    所以你直接使用str.substring(2,6)=C中文a;
      

  2.   

    substring()不行,
    如果我的字符串是“123456789”     截取四位是 “1234”
    如果是字符串是“测试字符测试” 截取四位是  ”测试字符“
    其中”测试字符"的占空间的长度是“1234”的两倍,我要的效果是无论有无数字或其他字符,截取出来的长度是一样才行。
      

  3.   

    所有中文的 ascii值是小于零的   你可以用 ascii (char) 获得一个字符的ascii,然后再做判断
      

  4.   

    哦 不好意思 偶以为我进的是PB社区了 
    PB里获取 ascii的函数才是ascii (char)
      

  5.   

    楼主的概念搞混了...
    你说的长度是字节数
    但是String.substring()是以char来度量的,所以String.substring()是可以用的。
    中文的一个字也是一个char,拉丁字母的一个字母也是一个char。
      

  6.   

    下面的代码处理截断byte数为14的情况,当最后若干位byte会导致某个字符不完整的话,放弃这个字符.
    int length=14;
    int i=0;
    for(;i<str.length();)
    {
       char c=str.charAt(i);
       length-=(c+"").getBytes().length;
       if(length==0)break;
       else if(length<0){i=i-1;break;}//这时候直接break,将不放弃这个字符而是增加byte截断长度
       else {i++;}
    }
    out.print(str.substring(0,i));
      

  7.   

    上面的代码有一处错:最后out.print之前应该判断i!=str.length.
      

  8.   

    String str = "abcdefgg";
    byte[] by = str.getBytes();
    String str2 = new String(by,0,8);
    System.out.println(str2);
      

  9.   

    参阅这里的程序
    http://www.cjsdn.net/post/view?bid=28&id=111075&tpg=1&ppg=1&sty=1&age=0#111075
      

  10.   

    实验成功!package com.rcom10002;import java.util.regex.*;public class Demo { public static void main(String args[]) {
    String str = "我就B信B能解决了;试验!";
    System.out.print((new Demo()).getSubString(str, 0, 4));
    }

    public String getSubString(String SubjectString, int start, int length ){

    String ResultString = null; try {
    Pattern regex = Pattern.compile("^.{" + start + "}(.{" + length + "}).*$");
    Matcher regexMatcher = regex.matcher(SubjectString);
    //test
    System.out.println(regexMatcher.matches());
    try {
    ResultString = regexMatcher.replaceAll("$1");
    } catch (IllegalArgumentException ex) {
    // Syntax error in the replacement text (unescaped $ signs?)
    } catch (IndexOutOfBoundsException ex) {
    // Non-existent backreference used the replacement text

    } catch (PatternSyntaxException ex) {
    // Syntax error in the regular expression
    }

    return ResultString;
    }}
      

  11.   

    jsp页面保存到数据库有乱码解决方法Jsp+tomcat+bean中文乱码问题解决方法javabean中参数有乱码
    1) 所有的jsp页面指定字符编码方式,如:Charest=gb2312,Charest=UTF-8等等
    2) 在应用服务器中的server.xml方件中找到设置服务器端口的行,一般是这样开头:”<Connector port="8080"”,
    3) 在找到的行"<Connector"开头的字符串后加上:URIEncoding="UTF-8" ,保存文件
    --------------------------------------------------------------------------
    jsp页面有乱码解决方法    所有的jsp页面指定字符编码方式,如:Charest=gb2312,Charest=UTF-8等等
        <%@ page contentType="text/html; charset=UTF-8">
    --------------------------------------------------------------------------
    jsp单个中文参数乱码解决方法    用这个转换一下: 
        <%!String trans(String chi)
           {
            string result =null;
            byte temp[];
            temp=chi.getBytes("iso=8859-1");
            result= new String(temp);
            }
        %>
    或者直接这样:
        <% 
          request.setCharacterEncoding("UTF-8");
          out.println(request.getParameter("参数ID")
        %>
    --------------------------------------------------------------------------