编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按照字节数截取的字符串,代码如下所示:(转载)
String subString(String str,int len){
if(str == null && "".equals(str)){
return null;
}
//将字符串中的char数组转换成指定编码方式的byte数组的函数
byte[] strBytes = null;
try {
strBytes = str.getBytes("GBK");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
//得到字符串的长度,判断截取字符串的长度是否在判断的范围内,否则返回原串
int strLen = strBytes.length;
if(len >= strLen || len < 1){
return str;
}
int count = 0;
for(int i=0; i<len; i++){
//将每个字节数组转换为整型数,因为后面根据值的正负来判断是否为汉字
int value = strBytes[i];
//如果是汉字(负),则统计截取字符串中的汉字所占字节数
if(value < 0){
count++;
}
}
//依据判断给定的字符串是否含有汉字,利用String类的substring()方法来截取不同的长度
//根据所统计的字节数,判断截取到字符是否为半个汉字,奇数为半个汉字
if(count % 2 !=0){
//如果在截取长度为1时,则将该汉字取出,
//其他情况则不截取这里的截取长度则按字符长度截取(截取字节长度数-截取汉字字节数/2-截取到的半个汉字的字节数)
len = (len == 1)?len:len-count/2-1;
}else{
//截取字符长度为字节长度-汉字所占字节长度/2(汉字占两个字节)
len = len-(count/2);
}
return str.substring(0,len);
}
注意:获取字符串的bytes,bytes数组中汉字的byte值为负数,这是判断汉字的一个依据
分享到:
相关推荐
### Java中截取带汉字的字符串 在Java编程语言中,处理包含中文字符的字符串时,经常遇到的一个问题是如何正确地截取...通过以上方法,我们可以在Java中有效地处理包含中文字符的字符串截取问题,避免出现乱码等情况。
### 高效中英文字符串截取方法 #### 知识点概述 本文将详细介绍一种用于高效截取中英文混合字符串的方法。该方法适用于处理大量数据(例如10万条记录),能够在极短的时间内(例如1秒)完成所需的操作。这种方法...
在“截取字符串.txt”中,可能会有各种截取字符串的例子,包括不同的起始位置和结束位置,以及如何处理负数索引等特殊情况。而在“split分割字符串.txt”中,可能会涵盖不同分隔符的使用,以及处理带有多个连续分隔...
在计算机编程中,字符串截取是一个常见的需求,特别是在处理用户输入或数据解析时。字符串截取是指从一个较长的字符串中提取出一个子字符串的过程。通常情况下,我们可以简单地通过索引或长度来指定截取的位置和长度...
本文将详细介绍一个专门用于处理中文字符串截取的JavaScript函数,该函数能够根据字符的实际编码长度来精确控制截取的长度。 #### 二、关键概念解析 ##### 2.1 字符串截取 字符串截取是指从一个较长的字符串中...
### 字符串截取知识点详解 #### 一、概述 ...通过合理地选择编码方式和精心设计的算法,可以有效地处理各种复杂的字符串截取需求。同时,熟练掌握 jQuery 操作 DOM 的方法也是前端开发者必备的技能之一。
总之,"php不破坏单词截取子字符串类.zip" 是一个旨在优化字符串截取体验的PHP类库,它可以帮助开发者在处理文本时保持词汇的完整性,提高代码的可读性和用户体验。通过理解和使用这个类库,我们可以更好地控制和...
### C++ 中使用 `strtok` 进行字符串截取详解 在C++编程语言中,处理字符串是一项常见的任务。特别是在需要对字符串进行分隔、提取特定子串的情况下,掌握有效的字符串操作技巧至关重要。本文将详细介绍如何使用 `...
输入一个字符串,将输出该字符串最长对称子串及其长度,很精巧的算法
总结来说,"C++数据结构字符串及KMP匹配算法"是一个关于C++编程和字符串处理的主题,涵盖了自定义字符串类的设计和实现,以及在字符串匹配中应用KMP算法。通过理解和掌握这些知识,开发者可以更高效地处理字符串操作...
标题 "输入一个字符串,输出所有该字符串的组合情况" 涉及的主要知识点是字符串处理和算法,特别是组合和排列的生成。在这个问题中,我们需要编写程序来生成一个给定字符串的所有可能的子序列或子字符串,这通常涉及...
这些文件很可能包含了不同版本的字符串截取和摘要生成的实现。可能的实现方式包括: - 使用正则表达式寻找关键词或特殊结构来确定摘要。 - 分析句子长度,选择较短的句子作为摘要,以保持摘要的简洁性。 - 使用`str...
此外,对于非常大的字符串或者复杂的分隔逻辑,可能需要考虑性能优化或其他更高效的算法。 ### 结论 通过对`FUNCTION_SF_SPLIT_STRING`的详细分析,我们可以看到,在PL/SQL中实现字符串分割不仅需要理解基本的字符...
而单独的`字符串`文件可能包含了字符串处理的代码示例,例如字符串操作函数的实现或特定字符串算法的演示。这些代码对于理解和实践数据结构的线性表和字符串部分非常有帮助,值得深入学习和研究。
该问题要求使用给定的数字字符串,构建一个能够整除15的最大整数,注意每个字符只能使用一次。下面是对该问题的详细解析和解决方案。 问题描述: 给定一个只包含数字[0…9]的字符串,请使用字符中的某些字符,构建...
标题中的“一个截取字符串的小例子(全部源码)”表明这是一个关于字符串处理的编程示例,提供了完整的源代码供学习者参考。在描述中提到的功能是“可以截取字符中自定义字符之间的一串”,这通常涉及到字符串的分割...
例如,我们可以使用`substring()`截取子字符串,`indexOf()`和`lastIndexOf()`查找字符或子串的位置,以及`equals()`和`equalsIgnoreCase()`进行字符串比较。 2-重复串,也称为回文串,是一种特殊的字符串,它可以...
`std::string`是一个模板类,它提供了许多内置方法,如`size()`用于获取字符串长度,`substr()`用于截取子字符串,`find()`用于查找子字符串,以及`append()`和`insert()`用于连接和插入字符。然而,这些内置方法...
本示例将深入探讨一个简单的C#字符串加密算法,这对于初学者理解加密原理和实践是非常有帮助的。 字符串加密的基本思想是将明文字符串转化为密文,这样即使数据被截取,也无法直接读取其内容。常见的加密方法包括...
因此,在进行字符串截取时,需要区分全角与半角字符,并据此进行不同的处理。 #### 2. 字符串截取逻辑 针对上述特点,可以设计如下算法实现字符串的精确截取: 1. **去除空白字符**:首先,通过`ClearBlank`方法...