精华内容
下载资源
问答
  • java 截取中文字符串
    2021-04-08 08:49:25
    更多相关内容
  • 下面小编就为大家带来一篇java按字节截取带有汉字的字符串的解法(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • jsp截取中文字符串 len为字节长度
  • java 字符串截取 中文问题

    千次阅读 2021-02-12 21:19:20
    /***:编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的*字符串。但是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,输入“我ABC汉*DEF”,6,应该输出为“我ABC”而不是“我ABC+...

    package sys;

    import java.io.UnsupportedEncodingException;

    /**

    * :编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的

    * 字符串。但是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,输入“我ABC 汉

    * DEF”,6,应该输出为“我ABC”而不是“我ABC+汉的半个”

    *

    * @author JYA

    *

    */

    public class A {

    public String SplitIt2(String splitStr, int subInt) {

    // if (subInt > splitStr.getBytes().length) {

    // return splitStr;

    // }

    StringBuilder sb = new StringBuilder("");

    int k = 0;

    String str = "";

    for (int i = 0; i 

    if (i 

    str = splitStr.substring(i, i + 1);

    k += str.getBytes().length;

    if (k <= subInt) {

    sb.append(str);

    } else {

    break;

    }

    }

    }

    return sb.toString();

    }

    public static void main(String[] args) throws UnsupportedEncodingException {

    A ss = new A();

    System.out.println(ss.SplitIt2("测试阿什11顿拉", 40));

    // System.out.println(Pattern.matches("[^\\x00-\\xff]", "阿"));

    // System.out.println(isChinese(","));

    }

    public static boolean isChinese(String str) {

    char[] k = str.toCharArray();

    for (int i = 0; i 

    // if ('\u4e00' > k[i] || k[i] > '\u9fa5') {

    // return false;

    // }

    if ('\uFE30' > k[i] || k[i] > '\uFFA0') {

    return false;

    }

    }

    return true;

    }

    }

    展开全文
  • 解决截取字符串中带有汉字的问题,以防截取汉字截取一般出现错误情况
  • 首先我谈谈我对上面9个例e69da5e6ba9062616964757a686964616f31333262373265子的理解,即这个方法应该实现的功能:这个方法与JDKString原有的方法substring是有区别的,在这个方法里,一个中文汉字相当于占2个英文...

    展开全部

    楼主你好,很高兴能回答你这个很有挑战性的问题,首先我谈谈我对上面9个例e69da5e6ba9062616964757a686964616f31333262373265子的理解,即这个方法应该实现的功能:

    这个方法与JDK String原有的方法substring是有区别的,在这个方法里,一个中文汉字相当于占2个英文字符的位置。而且根据方法传入的参数pStart和pEnd在返回相应的子字符串child

    如果pstart刚好在某个汉字的前半部分,则child应包含该汉字,在后部分则不含。与之相对应的是pEnd如果在某个汉字的后半部分,则child应含该汉字,否则不包含,如果pStart超出pStr的长度(这里一个汉字长度算2),则返回空,其他性质和JDK的性质形同。

    如果觉得我的理解不错,且看下面的代码:

    public class Test{

    public Test(){

    String str="ABCDE";

    String str2="ABC你D";

    String str3="A你B好C吗勇DE";

    System.out.println("1 str='ABCDE' start=1 end=5 结果:"+getSubString(str,1,5));

    System.out.println("2 str='ABCDE' start=1 end=4 结果:"+getSubString(str,1,4));

    System.out.println("3 str='ABCDE' start=2 end=4 结果:"+getSubString(str,2,4));

    System.out.println("4 str='ABCDE' start=6 end=7 结果:"+getSubString(str,6,7));

    System.out.println("5 str='ABCDE' start=5 end=5 结果:"+getSubString(str,5,5));

    System.out.println("6 str2='ABC你D' start=1 end=3 结果:"+getSubString(str2,1,3));

    System.out.println("7 str2='ABC你D' start=1 end=4 结果:"+getSubString(str2,1,4));

    System.out.println("8 str2='ABC你D' start=1 end=5 结果:"+getSubString(str2,1,5));

    System.out.println("9 str2='ABC你D' start=4 end=4 结果:"+getSubString(str2,4,4));

    System.out.println("10 str3='A你B好C吗勇DE' start=9 end=10 结果:"+getSubString(str3,9,10));

    }

    public static void main(String args[]){

    new Test();

    }

    public String getSubString(String str,int pstart,int pend){

    String resu="";

    int beg=0;

    int end=0;

    int count1=0;

    char[] temp=new char[str.length()];

    str.getChars(0,str.length(),temp,0);

    boolean[] bol=new boolean[str.length()];

    for(int i=0;i

    bol[i]=false;

    if((int)temp[i]>255){//说明是中文

    count1++;

    bol[i]=true;

    }

    }

    if(pstart>str.length()+count1){

    resu=null;

    }

    if(pstart>pend){

    resu=null;

    }

    if(pstart<1){

    beg=0;

    }else{

    beg=pstart-1;

    }

    if(pend>str.length()+count1){

    end=str.length()+count1;

    }else{

    end=pend;//在substring的末尾一样

    }

    //下面开始求应该返回的字符串

    if(resu!=null){

    if(beg==end){

    int count=0;

    if(beg==0){

    if(bol[0]==true)

    resu=null;

    else

    resu=new String(temp,0,1);

    }else{

    int len=beg;//zheli

    for(int y=0;y

    if(bol[y]==true)

    count++;

    len--;//想明白为什么len--

    }

    //for循环运行完毕后,len的值就代表在正常字符串中,目标beg的上一字符的索引值

    if(count==0){//说明前面没有中文

    if((int)temp[beg]>255)//说明自己是中文

    resu=null;//返回空

    else

    resu=new String(temp,beg,1);

    }else{//前面有中文,那么一个中文应与2个字符相对

    if((int)temp[len+1]>255)//说明自己是中文

    resu=null;//返回空

    else

    resu=new String(temp,len+1,1);

    }

    }

    }else{//下面是正常情况下的比较

    int temSt=beg;

    int temEd=end-1;//这里减掉一

    for(int i=0;i

    if(bol[i]==true)

    temSt--;

    }//循环完毕后temSt表示前字符的正常索引

    for(int j=0;j

    if(bol[j]==true)

    temEd--;

    }//循环完毕后temEd-1表示最后字符的正常索引

    if(bol[temSt]==true)//说明是字符,说明索引本身是汉字的后半部分,那么应该是不能取的

    {

    int cont=0;

    for(int i=0;i<=temSt;i++){

    cont++;

    if(bol[i]==true)

    cont++;

    }

    if(pstart==cont)//是偶数不应包含,如果pstart

    temSt++;//从下一位开始

    }

    if(bol[temEd]==true){//因为temEd表示substring 的最面参数,此处是一个汉字,下面要确定是否应该含这个汉字

    int cont=0;

    for(int i=0;i<=temEd;i++){

    cont++;

    if(bol[i]==true)

    cont++;

    }

    if(pend

    temEd--;//所以只取到前一个

    }

    if(temSt==temEd){

    resu=new String(temp,temSt,1);

    }else if(temSt>temEd){

    resu=null;

    }else{

    resu=str.substring(temSt,temEd+1);

    }

    }

    }

    return resu;//返回结果

    }

    }

    测试结果如图,并且可以任意修改字符串,保证结果正确。

    That's all !

    7236f9a524a32a3f91faffca3faefc5c.png

    展开全文
  • 主要为大家详细介绍了Java截取中英文混合字符串的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • SUBSTRING 返回字符、binary、text或 image表达式的一部分。有关可与该函数一起使用的有效 Microsoft® SQL Server™数据类型的更多... 语法 SUBSTRING ( expressionJava截取字符串的函数且保证中文截取正常截取字符...

    SUBSTRING  返回字符、binary、text      或      image      表达式的一部分。有关可与该函数一起使用的有效      Microsoft®      SQL      Server™      数据类型的更多信息,请参见数据类型。    语法  SUBSTRING      (      expression

    Java截取字符串的函数且保证中文截取正常

    截取字符串abcdefg中的cdf      function  Getstr(str){        if(/cdf/.test(str)){        //正则表达式test() 方法匹配/cdf/          var efg=str.substr(str.indexOf('cdf'),3);       //indexOf索引cdf返回下标,  在用substr返回cdf返回的下标开始截

    直接看代码:

    /**

    * 输入一串字符串,输入一个指定的长度截取原字符串,保证中文截取正常

    *

    * 如:AB我CDEFG 输入4截取 AB我 输入6截取 AB我CD

    *

    */

    public class CharStr {

    public static void main(String[] args) {

    System.out.println("AB我".length());

    String tmp = CharStr.getStr("AB我CDEFG", 6);

    String tmp2 = CharStr.getStr("AB我CDEFG", 4);

    System.out.println(tmp + "-----------" + tmp2);

    }

    // 关键点中文的ASII编码是负数: src.getBytes()[len] < 0 一个中文汉字的字符串长度为 1

    public static String getStr(String src, int len) {

    System.out.println("len-1 ======" + src.getBytes()[len - 1]);

    // 当检索到最后一个字符为中文则数组实际的截取长度向后左边截取一位

    return new String(src.getBytes(), 0, len

    - (src.getBytes()[len] < 0 ? 1 : 0));

    }

    }

    展开全文
  • [java]代码库import java.io....public class CutString {/*** 判断是否是一个中文汉字** @param c* 字符* @return true表示是中文汉字,false表示是英文字母* @throws UnsupportedEncodingException* ...
  • Java 按照字节来截取字符串的工具,不会出现半个汉字。一个中文两个字节,一个英文字符只占 1 个字节** 1. 通常我们用于前端显示的时候,防止标题过长
  • java 截取汉字

    2015-09-02 17:11:54
    目的是得到这样的效果 首先获取的是含有html代码的字符串,要...这样就得到了纯文本的汉字 这个时候使用substring 方法就行了 ...会出现问题,截取字符串的时候会出现只截取半个汉字的情况,这个还没想好怎样解决
  • /** * @param len * 需要显示的长度(注意:长度是以byte为单位的,一个汉字是2个byte) * @param symbol * 用于表示省略的信息的字符,如“...”,“>>>”等。 * @return 返回处理后的字符串 */ pub...
  • Java截取字符串保证汉字不被截取半个Java截取字符串保证汉字不被截取半个public class SplitString {public static void main(String[] args) {String str = "我ABC汉DEF";//str = split(str, 6);str = truncate(str...
  • 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 但是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,6,应该输出为“我ABC”而不是“我ABC+汉的半...
  • 但是要保证汉字不被截半个,如"我ABC"4,应该截为"我AB",输入"我ABC汉DEF",6,应该输出为"我ABC"而不是"我ABC+汉的半个"。import java.io.UnsupportedEncodingException;/*** 截取的要点:* 1.首先将字符串转换成...
  • public class SubString {//编写一个截取字符串的函数,输入为一个字符串和字节//数,输出为按字节截取的字符串,但要保证汉字不被截取半//个,如“我 ABC”,4,应该截取“我 AB”,输入“我 ABC//汉 DEF”,6,...
  • /**** 面试题:截取字符串指定指定字节数的内容,如果指定的字节数在汉字的中间,汉字不能截取部分,只截取前面的内容。如"ab我",截取3个字节的字符,如果采用非iso-8859-1编码 汉字所占字符超过1个字节,所以此时...
  • 今天小编就为大家分享一篇java字符串常用操作方法(查找、截取、分割),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • java截取字符串中的数字并组合成为一个大字符串 String regex = "\\d*"; Pattern p = Pattern.compile(regex); Matcher m = p.matcher(需要截取的String); String sumString = ""; while (m.find()) { if (!"...
  • java 文件名截取方法

    2020-09-05 17:10:39
    在实际开发应用中会应到截取文件名,本文将介绍java中文件名的截取,需要了解的朋友可以参考下
  • java截取字符串后几位

    千次阅读 2021-03-15 01:32:37
    jsp中常见使用技术,js,jstl,eclipse,java 1、length() 字符串的长度 例:char chars[]={'......java截取字符串_IT/计算机_专业资料。java截取字符串 1根据字符串 S...JAVA过滤HTML代码和截取字符串的类(包括测试用例)...
  • java 截取汉字字符串

    2013-10-11 11:49:25
    对于汉字的切分 1个 汉字 占用2个字符 不能切出半个字符      public class StringSplit { public static String split(String s, int n) { int d = n, i = 0; while (i &lt; s.length() &amp...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 26,439
精华内容 10,575
关键字:

java截取中文

java 订阅