/**
* 写一个方法 String left(String str ,int n) <br>
* str字符串中可能包含中文,中文是2bytes,实现的功能是<br>
* 如:“中abc12” n=4 则该方法返回“中ab”<br>
* “中abc国a” n=6 则返回“中abc”<br>
* 中文是一半时不返回
*
* @author Fee Share
*/
public class Test {
public static void main(String[] args) {
String s = "我是acf中d国人adfgdd123";
for (int i = 0; i <= s.getBytes().length; i++) {
System.out.printf("%2d=%s\n", i, getSubString(s, i));
}
}
private static String getSubString(String s, int n) {
int count = 0;
int offset = 0;
char[] c = s.toCharArray();
for (int i = 0; i < c.length; i++) {
if (c[i] > 256) {
offset = 2;
count += 2;
} else {
offset = 1;
count++;
}
if (count == n) {
return s.substring(0, i + 1);
}
if ((count == n + 1 && offset == 2)) {
return s.substring(0, i);
}
}
return "";
}
}
相关推荐
### ASP截取固定长度字符串知识点解析 在ASP(Active Server Pages)编程中,处理文本数据是常见的需求之一。尤其是在新闻发布系统、文章摘要生成等场景下,经常需要将一段较长的文字内容截取为指定长度的字符串,...
本文详细介绍了如何在前后端开发中实现精确截取指定长度字符串,特别是在处理包含全角和半角字符的情况下。通过具体的代码示例,我们了解到实现这一功能的关键在于正确地识别并计算不同字符的宽度,并据此进行适当的...
例如,如果输入字符串为 `"我 ABC"`,并且指定截取 4 个字节,则输出为 `"我 AB"`,而不是 `"我 AB"` 中的半个汉字。 SplitString 类 在本例中,我们定义了一个 `SplitString` 类,该类具有两个成员变量 `SplitStr...
根据给定文件的信息,本文将围绕“字符串截取”这一主题进行深入探讨,重点在于如何在Java环境下实现对包含中文字符的字符串进行精确截取,同时确保不会出现半个汉字的情况。 ### 字符串截取的基本概念 在计算机...
如果单纯按字符长度截取,可能会导致截取到半字符,从而破坏字符串的读取。因此,按照字节长度截取可以确保正确处理多字节字符。 C#中的`string`类提供了多种截取方法,如`Substring()`,但这些方法默认是基于...
如果截取操作恰好发生在某个中文字符的中间,那么剩下的半个字符将无法正确显示。为了避免这种情况,当检测到非ASCII字符的个数为奇数时,`n`会被设置为`p + 1`,以确保整个中文字符都被包含进来。 ```csharp if (m...
这里需要注意的是,由于UTF-8编码可能造成字符串和字节数组的长度不一致,例如对于中文字符,“程”字在UTF-8编码下占用3个字节,因此如果截取长度不当时,最后一个字符可能无法形成一个完整的字符。 为了解决上述...
3. 边界处理:类库可能还包含了处理边界情况的逻辑,例如当字符串长度小于截取长度时,如何返回原始字符串,或者当字符串长度远大于截取长度时,如何处理过多的字符。 4. 国际化支持:考虑到可能处理多种语言的字符...
最后,根据双字节字符的数量是否为偶数来决定截取的字节数,以保证截取后字符串的末尾不会是半个中文字符。 这种方法虽然能够较好地处理中文字符的截取,但并不完美。在处理多语言混合的字符串时,可能需要使用UTF-...
- 对于中文字符的处理,应特别注意边界情况的处理,避免出现半个汉字的情况。 - 使用 jQuery 操作 DOM 元素时,需要确保 jQuery 已经正确加载。 综上所述,字符串截取是一个在日常开发中非常实用的功能,尤其在处理...
例如,给定的标题 "Pb字符串中的中文和英文(含符号)拆分" 描述了一个需求:将像 '中字A文C' 这样的字符串拆分为 '中字文' 和 'AC'。为了实现这一功能,我们可以创建一个自定义函数,例如 `uf_split_str_enorcn()`。 ...
这里我们探讨的主题是如何按显示长度来截取字符串,这在处理多语言文本时尤其重要,因为不同字符集(如UTF-8)中的字符长度可能不一致。在UTF-8编码下,一个英文字符通常占用1个字节,而一个汉字则可能占用1到3个...
面试中可能会遇到类似的问题,要求编写一个函数来截取字符串,确保汉字不被截半。以下是一个简单的示例实现: ```java public class SplitString { private String str; private int byteNum; public ...
5. 特殊情况处理:如果累积字节数达到`length+1`且当前字符是中文字符的前一个字节,说明下一个字节是中文的第二个字节,这时需要回退一位,即返回`i`位置作为子字符串的结束,以避免截取到半个汉字。 6. 如果遍历完...
// 如果是偶数个,则表示没有截断半个汉字,直接返回截取后的字符串 return new String(b, 0, len, "gb2312"); } else { // 如果是奇数个,则表示截断了一个汉字,需要向前移动一位,确保不截断汉字 return new...
但是,这种基于字符数量的截取方式并不适用于中英文混合的情况,因为这可能导致汉字被截断,形成半个汉字的情况。由于中文字符在计算机中通常由两个字节表示,而英文字符只占用一个字节,所以直接使用substring方法...
本文将深入探讨如何正确地按字节截取带有汉字的字符串,以确保不出现半字符或者乱码的情况。 首先,我们需要了解的是,Java默认使用Unicode编码,它对每个字符都分配了一个唯一的16位编码,这意味着大多数汉字在...
总结来说,这个Java函数解决了字符串截取时可能遇到的汉字截半问题,通过检查字节的ASCII值并适当调整截取长度,确保了输出字符串的正确性和可读性。同时,它也处理了可能出现的边界条件,如null值和超出字符串长度...
UTF-8是一种针对Unicode字符集的可变长度字符编码,能够用1到4个字节来表示一个字符。在UTF-8编码中,英文字符以单字节形式存储,而中文字符则以三字节的形式存储。这就意味着在使用传统的字符串处理函数时,若不...
例如,如果需要截取长度为2的字符串,按照传统的单字节处理方式,可能会导致取出的是半个中文字符,从而影响字符串的完整性和可读性。 因此,我们需要编写能够正确处理双字节字符的字符串截取函数。这类函数在截取...