编程:编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 但是要保证汉字不被截半个,如"我 ABC"4,应该截为"我 AB",输入"我 ABC 汉 DEF",6,应该输出为"我 ABC"而不是"我ABC+汉的半个"
public class SplitStr {
/*
* 判断是否为汉字
*
* @param cc 输入字符
*/
public static boolean strIfChinese(char cc) {
String ccStr = String.valueOf(cc);
return ccStr.getBytes().length > 1 ? true : false;
}
/*
* 计算输入字符串的总字节数
*
* @param str
*/
public static int strTotalLen(String str) {
int len = 0;
char[] chr = str.toCharArray();
for (char cc : chr) {
if (!strIfChinese(cc)) {
len = len + 1;
} else {
len = len + 2;
}
}
return len;
}
/*
*
* @param inputStr 输入的字符串
*
* @param len 指定长度的字节数
*/
public String retStr(String inputStr, int len) {
// 如果输入的字符串为空或者是"",则直接输出"";
if (inputStr == null || inputStr.equals(""))
return "";
// 如果len为0或大于总字节数
if (len == 0 || len > strTotalLen(inputStr))
return inputStr;
char[] chr = inputStr.toCharArray();
String str="";
int count = 0;
for(char cc:chr){
if (count < len) {
if (strIfChinese(cc)) {
if (count + 1 == len)
return str;
count = count + 2;
str = str + String.valueOf(cc);
} else {
count = count + 1;
str = str + String.valueOf(cc);
}
}
}
return str;
}
/**
* @param args
*/
public static void main(String[] args) {
/*
* String str = "a我bc"; char[] chr = str.toCharArray(); byte[] byt =
* str.getBytes(); for (byte bb : byt) { System.out.println(bb); }
*
* for (char cc : chr) { System.out.println(cc); }
*/
// System.out.println(chr.length + "&&&" + byt.length + "%%%" + by);
SplitStr splitStr = new SplitStr();
String str = "我b们c";
System.out.println(splitStr.retStr(str, 5));
}
}
分享到:
相关推荐
然而,截取字符串时,如果不注意,可能会因为字节对齐的问题导致字符被错误地分割。例如,如果一个中文字符被截断在两个字节之间,那么在显示时就会出现乱码。 要实现安全的混合字符串截取,我们可以使用Delphi内置...
在编程领域,字符串操作是一项基础且重要的任务,而“截取字符串”是其中的一个关键功能。这个小demo展示了如何在不同的编程环境中实现字符串截取,同时也涉及到字符串的空格处理。接下来,我们将深入探讨这两个主题...
例如,在Python中,你可以使用切片操作符`[start:end]`来截取字符串,其中`start`是开始索引,`end`是结束索引(不包括该位置的字符)。例如,对于字符串`s = "Hello, world!"`,`s[7:12]`将返回`"world"`。 2. ...
这就意味着当我们按照字节长度截取字符串时,可能会将一个完整的汉字分割成两部分,从而导致乱码。 Java中的`String`类提供了多种截取字符串的方法,如`substring()`、`subSequence()`等,但它们都是基于字符(char...
在某些场景下,我们可能需要按照特定的字节数来截取字符串,比如在网络传输、数据解析或编码转换时。本篇文章将详细探讨“按byte截取字符串”这一技术点,并通过两个Java文件——SliceByByteTest.java和SliceByByte....
在 `main` 方法中,我们创建了一个 `SplitString` 对象,并调用其 `SplitIt` 方法来截取字符串。 总结 本例中,我们实现了一个 Java 字符串截取函数,该函数可以截取指定字节的字符串,并保证汉字不被截半个。该...
### ASP.NET 截取字符串方法详解 在ASP.NET开发中,有时我们需要对字符串进行截取操作,特别是当涉及到多字节字符(如中文)时,简单的字符串截取可能会导致乱码问题。本文将详细介绍一种使用字节精确计算的ASP.NET...
在ASP.NET C#开发环境中,处理字符串是一项常见且重要的任务,尤其是在需要对字符串进行精确控制的情况下,如按字节截取字符串。本文将详细介绍如何为C#中的`String`类添加一个扩展方法,该方法允许我们按照字节而非...
在Java编程语言中,处理包含中文字符的字符串时,经常遇到的一个问题是如何正确地截取这些字符串。如果直接按照字节(byte)来进行分割,很容易导致中文字符被截断一半,从而形成乱码。这是因为一个中文字符通常占用多...
中文字符串通常包含UTF-8编码的字符,这与ASCII编码的英文字符串处理方式有所不同。以下将详细讲解如何在PHP中正确截取中文字符串。 首先,我们需要了解UTF-8编码的特点。UTF-8是一种变长的字符编码,英文字符由一...
这个类应该包含一个方法,接收字符串、起始位置和长度作为参数,返回截取后的字符串。在处理中文字符时,我们需要确保按照字符而非字节进行截取。 2. **编译Java代码**:将Java源代码编译成.class文件。确保添加了...
首先,理解为什么需要按照字节长度而不是字符长度截取字符串。在处理非ASCII字符(如中文、日文等)时,一个字符可能占用多个字节。如果单纯按字符长度截取,可能会导致截取到半字符,从而破坏字符串的读取。因此,...
本篇文章将深入探讨如何在iOS环境下实现这个功能,主要关注如何截取字符串中的汉字部分。 首先,我们要理解汉字在Unicode编码中的位置。汉字在Unicode编码中属于基本多文种平面(BMP),其编码范围是从0x4e00到0x9...
特别是在处理包含多种字符集(如英文与中文)的字符串时,考虑到不同字符编码长度的差异性,简单地按照字符数量进行截取可能会导致显示效果不佳或出现乱码等问题。本文将详细介绍一个专门用于处理中文字符串截取的...
在ASP.NET中,截取字符串是一项常见的操作,尤其是在处理用户输入、数据显示或者数据处理时。中文字符和英文字符在截取时的区别在于它们的编码方式和占用的字节数。中文字符通常使用UTF-8编码,每个字符占用2至3个...
1.substring 方法 定义和用法 substring 方法用于提取字符串中介于两个指定下标之间的字符。... 返回值 一个新的字符串,该字符串值包含 stringObject 的一个子字符串,其内容是从 start 处到 stop-1 处的所有字
总的来说,Java中精确截取字符串涉及到字符编码、字节长度计算等多个方面。对于不同的场景,需要选择合适的方法,确保截取后的字符串既能满足长度要求,又能正确显示其中的文本内容。在实际开发中,可以根据项目需求...
`substr()` 是PHP中用于截取字符串的基本函数,而`mb_substr()` 则是多字节安全的版本,适用于处理包含多种字符集(如UTF-8)的字符串。 1. **substr() 函数** `substr(string $str, int $start, ?int $length = ...
本文将深入探讨一种按字节截取字符串的方法,并通过分析一个具体的Java代码示例来解释其实现原理。 #### 核心概念:Unicode与字节 在讨论字符串按字节截取之前,我们首先需要理解几个基础概念。现代计算机系统中,...
因此,如果直接按照字节数来截取字符串,可能会导致截取结果包含半个汉字,这显然是不希望看到的。 ### 实现细节分析 #### 1. 理解UTF-8编码 UTF-8是一种可变长度的Unicode编码格式,它支持所有Unicode字符,同时...