java中将字符串按照指定长度分割3部分,且每部分截取的字符串长度不能超过10
时间: 2025-06-29 15:11:39 浏览: 14
### Java 实现按指定长度分割字符串
为了实现在Java中按照特定长度来分割字符串,并确保每个分段的最大长度为10个字符,可以采用如下方法:
定义一个名为`splitByLength`的方法用于处理字符串的切割操作。此函数接收三个参数:待切分的原始字符串、编码方式以及每一段允许的最大字节数。通过循环遍历输入字符串中的每一个字符,将其转换成字节数组后逐个读取并累加到临时缓冲区直到达到设定的最大值为止;一旦超过该阈值就将当前收集的内容作为一个新的子串加入列表之中,同时清空缓存继续下一个周期的工作。
下面是一个具体的例子[^1]:
```java
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.List;
public class StringSplitExample {
public static void main(String[] args) {
String originalString = "这是一个测试用例";
List<String> result = splitByLength(originalString, Charset.forName("UTF-8"), 10);
for (String part : result) {
System.out.println(part);
}
}
private static List<String> splitByLength(String str, Charset charset, int maxLengthInBytes) {
List<String> parts = new ArrayList<>();
StringBuilder currentPartBuilder = new StringBuilder();
byte[] bytes = str.getBytes(charset);
int accumulatedByteCount = 0;
int stringIndex = 0;
while (stringIndex < str.length()) {
char ch = str.charAt(stringIndex++);
int charSizeInBytes = String.valueOf(ch).getBytes(charset).length;
if ((accumulatedByteCount + charSizeInBytes) > maxLengthInBytes ||
(currentPartBuilder.length() >= 10)) { // Check character count as well
parts.add(currentPartBuilder.toString());
currentPartBuilder.setLength(0); // Clear buffer
accumulatedByteCount = 0;
// If the single character exceeds max length, add it directly and continue.
if (charSizeInBytes > maxLengthInBytes) {
parts.add(Character.toString(ch));
continue;
}
}
currentPartBuilder.append(ch);
accumulatedByteCount += charSizeInBytes;
}
if (currentPartBuilder.length() > 0) {
parts.add(currentPartBuilder.toString());
}
return parts;
}
}
```
上述代码展示了如何创建一个能够根据给定条件(即最大字节大小和字符数量限制)对任意字符串执行精确划分的功能。这里特别注意到了对于多字节字符的支持,比如中文字符,在计算总尺寸时考虑到了它们占用的实际空间量。
阅读全文
相关推荐


















