`
yuxuguang
  • 浏览: 139244 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java截取中英文混杂字符串

    博客分类:
  • java
 
阅读更多

 

 

java截取中英文混杂字符串,原来找的一直存在字符编码问题,所以在网上找到了这个解决方案,亲测可用。

 

	/**  
	    * 截取一段字符的长度(汉、日、韩文字符长度为2),不区分中英文,如果数字不正好,则少取一个字符位  
	    *   
	    * @param str 原始字符串  
	    * @param srcPos 开始位置
	    * @param specialCharsLength 截取长度(汉、日、韩文字符长度为2)  
	    * @return  
	    */   
	   public static String cutMultibyte(String str,int specialCharsLength) {   
		   int srcPos = 0;
	       if (str == null || "".equals(str) || specialCharsLength < 1) {   
	           return "";   
	       }
	       if(srcPos<0)
	       {
	        srcPos=0;
	       }
	       if(specialCharsLength<=0)
	       {
	        return "";
	       }
	       //获得字符串的长度
	       char[] chars = str.toCharArray();
	       if(srcPos>chars.length)
	       {
	        return "";
	       }      
	       int charsLength = getCharsLength(chars, specialCharsLength);       
	       return new String(chars, srcPos, charsLength);   
	   }   
	  
	   /**  
	    * 获取一段字符的长度,输入长度中汉、日、韩文字符长度为2,输出长度中所有字符均长度为1  
	    * @param chars 一段字符  
	    * @param specialCharsLength 输入长度,汉、日、韩文字符长度为2  
	    * @return 输出长度,所有字符均长度为1  
	    */   
	   private static int getCharsLength(char[] chars, int specialCharsLength) {    
	       int count = 0;   
	       int normalCharsLength = 0;   
	       for (int i = 0; i < chars.length; i++) {   
	           int specialCharLength = getSpecialCharLength(chars[i]);           
	           if (count <= specialCharsLength - specialCharLength) {            
	               count += specialCharLength;   
	               normalCharsLength++;   
	           } else {   
	               break;   
	           }   
	       }       
	       return normalCharsLength;   
	   }   
	  
	   /**  
	    * 获取字符长度:汉、日、韩文字符长度为2,ASCII码等字符长度为1  
	    * @param c 字符  
	    * @return 字符长度  
	    */   
	   private static int getSpecialCharLength(char c) {   
	       if (isLetter(c)) {   
	           return 1;   
	       } else {   
	           return 2;   
	       }   
	   } 
	   
	   /**  
	    * 判断一个字符是Ascill字符还是其它字符(如汉,日,韩文字符)  
	    *   
	    * @param c 需要判断的字符  
	    * @return 返回true,Ascill字符  
	    */   
	   public static boolean isLetter(char c) {   
	       int k = 0x80;   
	       return c / k == 0 ? true : false;   
	   } 

 

 

分享到:
评论

相关推荐

    Java截取中英文混合字符串的方法

    在Java中,字符串的截取可以使用substring方法,但是这种方法不能保证汉字不被截半个,因为它是按照字符的个数来截取的,而中文字符占用两个字节,英文字符占用一个字节。因此,需要使用特殊的方法来截取中英文混合...

    java中截取带汉字的字符串

    ### Java中截取带汉字的字符串 在Java编程语言中,处理包含中文字符的字符串时,经常遇到的一个问题是如何正确地截取这些字符串。如果直接按照字节(byte)来进行分割,很容易导致中文字符被截断一半,从而形成乱码。...

    高效中英文字符串截取方法

    ### 高效中英文字符串截取方法 #### 知识点概述 本文将详细介绍一种用于高效截取中英文混合字符串的方法。该方法适用于处理大量数据(例如10万条记录),能够在极短的时间内(例如1秒)完成所需的操作。这种方法...

    截取指定长度的字符串

    字符串在各种编程语言中都是基本的数据类型,如Python中的`str`,Java中的`String`,JavaScript中的`String`等。 截取字符串通常有两种主要方法:固定位置截取和指定长度截取。 1. 固定位置截取:这种方法通常基于...

    delphi 实现截取字符串中中文+英文混合截取

    在Delphi编程环境中,处理中文和英文混合的字符串截取是一项常见的任务,特别是在涉及到文本处理、数据解析或者用户界面展示时。由于Unicode编码的存在,中文字符通常占据两个字节,而英文字符则占据一个字节,这就...

    java中英文字符串截取

    本文将深入探讨如何在Java中有效地截取包含中文和英文字符的字符串,并解释给出的代码片段背后的逻辑。 ### Java中英文字符串截取的关键点 1. **字符编码的影响**:中文字符在不同的编码方式下占用的字节数不同。...

    截取中英文字符串函数

    可以截取中英文字符串,也可以含有字符,里面有好几个方法 有按字符个数截取 有按字节数来截取不会存在乱码

    java编写一个截取字符串的函数,输入为一个字符串和字节数.docx

    在 Java 中,字符串截取是一种常见的操作,特别是在处理汉字和 Unicode 字符时。下面是关于 Java 字符串截取函数的知识点: 字符串截取函数 Java 中有多种方式可以实现字符串截取,包括使用 `substring`、`split` ...

    ASP中英文混合字符串的截取

    在ASP(Active Server Pages)开发中,经常遇到需要处理中英文混合的字符串,尤其是在页面展示时,为了保持布局美观,需要对字符串进行截取。在处理这类问题时,普通的字符串截取函数,如`Left()`,无法很好地处理中文...

    SQL截取以逗号分隔的字符串SQL截取以逗号分隔的字符串

    SQL截取以逗号分隔的字符串SQL截取以逗号分隔的字符串SQL截取以逗号分隔的字符串SQL截取以逗号分隔的字符串

    java实现中英文混合字符截取方法

    Java 实现中英文混合字符截取方法是指在 Java 编程语言中截取字符串中混合了中英文字符的方法。这种方法主要用于解决在 Java 中截取字符串时遇到的问题,即在截取中英文混合字符串时如何避免汉字被截半个。 在 Java...

    C++中英混合字符串截取

    题目中的问题聚焦于如何正确地截取一个中英混合的字符串,确保在截取过程中不会将汉字字符截断。这个问题涉及到字符编码、字符串处理以及对Unicode的理解。下面将详细解释相关知识点。 首先,我们要理解在C++中处理...

    java中如何截取字符串.txt

    根据提供的文件信息,本文将详细解释Java中截取字符串的各种方法及其使用场景,并结合部分示例代码进行说明。 ### Java中截取字符串的方法 在Java编程语言中,字符串的处理是一项非常重要的技能,特别是在开发中...

    rf.rar_RF 字符串截取_Rf字符串比较_rf字符串切割

    在这个"rf.rar"压缩包中,我们看到涉及到RF字符串处理的三个关键知识点:RF字符串截取、RF字符串比较以及RF字符串切割。 1. RF字符串截取: 正则表达式提供了灵活的字符串截取方式。通过定义匹配模式,可以精确地...

    java 中字符串只中英数字混合需要分割的解决办法

    这个方法用来处理java中可能有一些特别的需要,一大串中英文混合,需要中间截断或是中英中间添加一些特别的标识,调用这个方法 第一个参数是要处理的字符串,第二个是要在中英字符中间插入的字符。调用就可以得到想...

    c#正则表达式截取指定字符串之间的字符串。类文件直接用就可以了~

    给写了2个方法,一个是直接截取单个需要的字符串,比如字符串string a="ab123456",我只需要提取3,那么就是单独截取就可以了,从2开始到4结束就行。 第二个是把所有的符合条件的字符串都截取出来,提取出来,比如...

    截取字符串

    在编程领域,字符串操作是一项基础且重要的任务,而“截取字符串”是其中的一个关键功能。这个小demo展示了如何在不同的编程环境中实现字符串截取,同时也涉及到字符串的空格处理。接下来,我们将深入探讨这两个主题...

    关于java按字节截取带有汉字的字符串的解法

    Java中的`String`类提供了多种截取字符串的方法,如`substring()`、`subSequence()`等,但它们都是基于字符(char)而不是字节的。因此,如果我们需要按照字节截取,需要自定义方法来处理。以下是一个简单的示例,...

    [待删除]字符串截取 - 中英文

    根据给定文件的信息,我们将深入探讨Java中字符串截取的原理、方法以及在中英文操作系统下的特殊处理。 ### Java字符串截取 #### 原理与实现 在Java中,字符串本质上是一个不可变的字符序列,由`char`类型的数组...

    截取特定部分字符串

    接下来,我们将深入探讨如何在Android和Java中进行字符串截取,以及如何重新组合这些截取的部分。 1. **`substring()` 方法**:这是Java语言中最常用的字符串截取方法。它接受两个参数,第一个参数是起始索引(包含...

Global site tag (gtag.js) - Google Analytics