问题:
字符串:music<<美丽的草原我的家>>。该字符串的长度即str.length()为:17,而目前需要存入数据库对应的字段长度为:16。所以必须对字符串进行截取。而前16个字节中,“原”字只有半个。这样存入数据库确对会出现“?”。所以必须判断是否是半个汉字,即只能存入“music<<美丽的草”。
分析:
汉字是双字节编码,它为了能够与英文字符分开,每个字节的最高位一定为1。如果是汉字,那么这个字节就是小于0的。这个函数就是通过这一原理实现的。所以要通过getBytes()转化为byte型,再比较与零的大小。
getBytes()是把一个字符串转成一个byte数组,因为计算机的数据都是基于字符的,也就是说一个字符串实际上就是一个字符流,因此可以转为字符数组。
程序:
public static String getStr(String src, int len) {
if (src == null) return null;
if (src.getBytes().length <= len) return src;
byte[] s = src.getBytes();
int flag = 0;
for(int i=0;i<len;++i){
if(s[i] < 0) flag++;
}
if(flag%2!=0) len--;
byte[] d = new byte[len];
System.arraycopy(s, 0, d, 0, len);
return new String(d);
}
分享到:
相关推荐
本文将详细介绍一个专门用于处理中文字符串截取的JavaScript函数,该函数能够根据字符的实际编码长度来精确控制截取的长度。 #### 二、关键概念解析 ##### 2.1 字符串截取 字符串截取是指从一个较长的字符串中...
在Java编程语言中,处理带有汉字的字符串时,由于汉字占据多个字节,按照字节进行截取可能会导致汉字被不完整地分割,从而产生乱码。为了解决这个问题,我们需要理解Unicode编码以及如何在Java中正确处理多字节字符...
截取含有中英文的字符串,按字节进行截取,当出现汉字时不能截取半个汉字要把汉字补全。
// 字符串截取包含对中文处理 if(str.replace(/[\u4e00-\u9fa5]/g,"**").length ){ return str; } else { var len = 0; var tmpStr = ""; for(var i = 0; i ; i++) { // 遍历字符串 if(/[\u4e00-\u9fa5]/....
本文主要介绍三个与字符串截取相关的函数:cutStr、strlen以及LeftTrue,这些函数由木木在2007年7月12日编写,用于在ASP环境中对字符串进行特定的操作。 1. **cutStr函数** `cutStr`函数用于截取指定长度的字符串...
我们在实际过程中要经常去检测含有中文字符串的实际长度, 因为中文字符,和英文字符在一起的话.判断起来你麻烦点. 原理跟在asp中的一样.逐个去判断.是中文加2英文加1. 代码如下:ASCIIEncoding n = new ...
因此,在这篇“Java判断中文字符串长度的简单实例”中,作者提供了几种计算字符串长度的方法,尤其强调了如何正确计算含有中文字符的字符串长度。 首先,Java中字符串的长度使用`.length()`方法来获取,但这个方法...
- **截取字符串从开始到给定长度的一段**:使用`substring(int beginIndex, int endIndex)`方法。 - **判断字符串是否以某个前缀开头**:使用`startsWith(String prefix)`方法。 - **判断字符串是否以某个后缀结尾**...
2. **检查字符串是否含有特殊字符**: - 为了检查字符串中是否包含特定的特殊字符,可以编写一个函数,如 `checkUserName`。在示例中,该函数接收一个字符串 `username`,然后遍历一个包含特殊字符的数组 `arr`,...
普通的字符串截取函数如`substr()`或`mb_substr()`在处理这类需求时可能会破坏原有的HTML结构,造成页面布局问题。针对这一问题,本文分享了一个能够处理包含HTML标签的字符串截取函数——`cut_html_str`。 `cut_...
然而,当涉及到包含中文汉字的字符串时,简单的`strrev()`函数并不能很好地工作,因为该函数设计时并未考虑多字节字符集,如UTF-8编码下的中文字符。中文字符在UTF-8编码下通常由多个字节表示,因此直接使用`strrev...
字符串截取功能 除了计算长度外,有时还需要对字符串进行截取,例如,当字符串过长时,只显示前N个字符,并在末尾添加省略号或其他符号。这可以通过扩展字符串原型来实现: ```javascript String.prototype.gbtrim ...
2.3 字符串截取与转换 41 0098 获取字符串中的中文 41 0099 英文字符串首字母大写 41 0100 指定符号分割字符串 42 0101 在文本中删除指定的中文或中文句子 43 0102 替换指定的字符串 44 0103 向字符串...
在SQL Server 2000中,处理含有半个汉字的问题主要涉及到对汉字编码的理解和字符串操作函数的应用。汉字在数据库中通常以双字节字符集(DBCS)存储,每个汉字由两个字节组成,其中第一个字节是高字节,第二个字节是...
总的来说,cutstr函数是一种处理复杂字符串截取问题的有效方法,特别是在处理多语言文本内容时。通过考虑字符编码和特殊字符,该函数可以安全地截取字符串,而不会破坏文本的完整性和正确性。在进行字符串截取操作时...
- `复制字符串(源字符串, 开始位置, 长度)`:从源字符串中截取指定长度的子字符串。 - `连接字符串(字符串1, 字符串2, ...)`:将多个字符串连接成一个新的字符串。 - `查找字符串(源字符串, 查找字符串, 开始位置...
8. **字符串截取**: - 提供的代码片段还包含了截取字符串的功能,虽然没有完整展示,但可以使用`Substring()`方法来实现。 这些基本操作是处理C#字符串时的基础,理解和掌握它们能够帮助开发者更有效地处理各种...
1)int length():该方法用来获取当前字符串的字符数量,无论中文还是英文每个字符都是1个长度 2)int indexOf(String str):查看给定字符串在当前字符串中的位置。 首先该方法会使用给定的字符串与当前字符串进行...
4. **字符串截取与替换**: - `find()`方法用于查找子字符串的位置,`replace()`方法用于替换子字符串。第4题中,`s.split(".")`会根据`.`将字符串分隔成列表,不能直接得到"python 学习手册",而其他选项则能实现...