`
aa00aa00
  • 浏览: 331373 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
文章分类
社区版块
存档分类
最新评论

使用Java截取字符串的方法

阅读更多
    本文讲述如何用Java实现按字节长度截取字符串。如果要截取的字符串是中、英文、数字混合的,往往产生问题。解决这个问题的方法是首先得到该字符串的UCS2编码的字节数组。

     

    Web应用程序在浏览器中显示字符串时,由于显示长度的限制,常常需要将字符串截取后再进行显示。但目前很多流行的语言,如C#、Java内部采用的都是 Unicode 16(UCS2)编码,在这种编码中所有的字符都是两个字符,因此,如果要截取的字符串是中、英文、数字混合的,就会产生问题,如下面的字符串:

  1. String s = "a加b等于c,如果a等1、b等于2,那么c等3";  

上面的字符串既有汉字,又有英文字符和数字。如果要截取前6个字节的字符,应该是”a加b等",但如果用substring方法截取前6个字符就成了"a 加b等于c"。产生这个问题的原因是将substring方法将双字节的汉字当成一个字节的字符(UCS2字符)处理了。要解决这个问题的方法是首先得到该字符串的UCS2编码的字节数组,如下面的代码如下:

  1. byte[] bytes = s.getBytes("Unicode"); 

由于上面生成的字节数组中前两个字节是标志位,bytes[0] = -2,bytes[1] = -1,因此,要从第三个字节开始扫描,对于一个英文或数字字符,UCS2编码的第二个字节是相应的ASCII,第一个字节是0,如a的UCS2编码是0  97,而汉字两个字节都不为0,因此,可以利于UCS2编码的这个规则来计算实际的字节数,该方法的实现代码如下:

  1. public static String bSubstring(String s, int length) throws Exception  
  2. {  
  3.  
  4.     byte[] bytes = s.getBytes("Unicode");  
  5.     int n = 0// 表示当前的字节数  
  6.     int i = 2// 要截取的字节数,从第3个字节开始  
  7.     for (; i < bytes.length && n < length; i++)  
  8.     {  
  9.         // 奇数位置,如3、5、7等,为UCS2编码中两个字节的第二个字节  
  10.         if (i % 2 == 1)  
  11.         {  
  12.             n++; // 在UCS2第二个字节时n加1  
  13.         }  
  14.         else 
  15.         {  
  16.             // 当UCS2编码的第一个字节不等于0时,该UCS2字符为汉字,一个汉字算两个字节  
  17.             if (bytes[i] != 0)  
  18.             {  
  19.                 n++;  
  20.             }  
  21.         }  
  22.     }  
  23.     // 如果i为奇数时,处理成偶数  
  24.     if (i % 2 == 1)  
  25.  
  26.     {  
  27.         // 该UCS2字符是汉字时,去掉这个截一半的汉字  
  28.         if (bytes[i - 1] != 0)  
  29.             i = i - 1;  
  30.         // 该UCS2字符是字母或数字,则保留该字符  
  31.         else 
  32.             i = i + 1;  
  33.     }  
  34.  
  35.     return new String(bytes, 0, i, "Unicode");  
  36. }  

下面代码使用了bSubstring方法:

  1. String s = "a加b等于c,如果a等1、b等于2,那么c等3";  
  2. System.out.println(bSubstring(s, 6)); 

上面的代码截取的字符串是"a加b等"。

分享到:
评论

相关推荐

    jsp页面截取字符串

    JSP 页面实质上是 Java 代码的视图部分,因此可以使用 Java 的 String 类提供的方法来截取字符串。以下是一些常用的方法: - `substring(int beginIndex, int endIndex)`:此方法用于从字符串中提取子字符串。`...

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

    在循环中,我们使用 `substring` 方法来截取字符串,并将结果输出。 main 方法 在 `main` 方法中,我们创建了一个 `SplitString` 对象,并调用其 `SplitIt` 方法来截取字符串。 总结 本例中,我们实现了一个 ...

    java中如何截取字符串.txt

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

    截取字符串

    例如,在Python中,我们可以使用` slicing`操作符 `[]` 来截取字符串的一部分。语法格式如下: ```python str = "这是一个示例字符串" substring = str[start:end] ``` 在这里,`start` 是起始位置,`end` 是结束...

    Java精确截取字符串.doc

    这个问题在文档标题“Java精确截取字符串.doc”中提到,描述也指出了解决字符串过长并需要添加省略号的需求。 以下是一种常见的解决方法,通过判断字符串中的每个字节来确定是否为中文字符,并据此进行截取: ```...

    java截取字符串程序,一道面试题。答案

    java截取字符串,一道面试题。好像没有找到正确答案,今天找时间做了一个,仅供参考。本人运行过了。

    按byte截取字符串

    本篇文章将详细探讨“按byte截取字符串”这一技术点,并通过两个Java文件——SliceByByteTest.java和SliceByByte.java的实例来阐述其实现方法。 首先,我们需要理解字符串在计算机内存中的存储方式。在Java中,字符...

    截取指定长度的字符串

    截取字符串通常有两种主要方法:固定位置截取和指定长度截取。 1. 固定位置截取:这种方法通常基于起始位置和结束位置来获取字符串的一部分。例如,在Python中,你可以使用切片操作符`[start:end]`来截取字符串,...

    怎么截取字符串的小程序

    在编程领域,截取字符串是一项基础且常用的操作。在标题为“怎么截取字符串的小程序”的知识主题中,我们将深入探讨如何在不同的编程语言中实现这一功能,以及它在实际应用中的价值。描述中提到的方法是通过确定字符...

    java中截取带汉字的字符串

    ### Java中截取带汉字的字符串 在Java编程语言中,处理包含中文字符的字符串时,经常遇到的一个问题是如何正确地截取...通过以上方法,我们可以在Java中有效地处理包含中文字符的字符串截取问题,避免出现乱码等情况。

    JAVA如何按字节截取字符串

    在Java语言中,我们可以使用多种方法来按照字节截取字符串。其中一种常用方法是使用StringBuffer类和charAt()方法来实现字节截取。 在上面的示例代码中,我们使用了StringBuffer类来实现字节截取。首先,我们定义了...

    (TAG标签)jstl和struts2标签截取字符串[文].pdf

    在截取字符串时,jstl标签提供了两种方法:一是使用jstl原有的标签库中的方法,二是使用自定义函数。 使用jstl原有的标签库中的方法 在使用jstl标签时,我们可以使用jstl原有的标签库中的方法来截取字符串。例如,...

    java中常用的字符串的截取方法

    Java 中常用的字符串截取方法 在 Java 编程语言中,字符串截取是非常重要的操作之一。字符串截取可以用于获取字符串中的部分内容,或者将字符串分割成多个部分。本文将详细介绍 Java 中常用的字符串截取方法,包括 ...

    Java精确截取字符串.pdf

    总的来说,Java中精确截取字符串涉及到字符编码、字节长度计算等多个方面。对于不同的场景,需要选择合适的方法,确保截取后的字符串既能满足长度要求,又能正确显示其中的文本内容。在实际开发中,可以根据项目需求...

    字符串按照指定的字节数来截取

    在Python中,可以使用内置的`[start:end]`切片操作来截取字符串。如果要考虑字节,我们需要使用`encode()`方法将字符串转化为字节串,因为Python的切片默认是基于字符的。例如: ```python s = "你好,世界" byte_s...

    oracle数据库截取字符串

    Oracle数据库提供了多种截取字符串的方法,本文将介绍 substr 和 instr 两个常用函数,以及 case when then else end 语句的使用。 一、substr 函数 substr 函数用于截取字符串的一部分,语法为 `substr(string, ...

    Java字符串查找和提取异常处理

    注意:如果字符串中包含多个相同的字符,该方法只会返回第一个匹配项的索引值。 #### 提取字符串中特定位置的字符函数 `charAt()` 此函数用于提取字符串中特定位置的字符。如果指定的位置超出字符串的长度范围,则...

    java 字符串截取工具类

    java 字符串截取工具类java 字符串截取工具类

    Substring字符串截取-kaic

    在编程领域,特别是涉及到文本处理的时候,`substring`方法是一个非常常见且重要的工具,它用于从一个字符串中截取部分子字符串。这个方法在Java、JavaScript等许多编程语言中都有提供,我们主要以Java为例来详细...

    截取特定部分字符串

    1. **`substring()` 方法**:这是Java语言中最常用的字符串截取方法。它接受两个参数,第一个参数是起始索引(包含),第二个参数是结束索引(不包含)。例如,如果我们有一个字符串`str = "Hello, world!"`,要截取...

Global site tag (gtag.js) - Google Analytics