我正在学习一个介绍性的 prog 类,所以我只允许使用字符串对象的方法。可能还有其他“更漂亮”的方法来解决它,但我不允许使用更先进的技术。假设我有一个字符串“abcdefghijklmnopqrstuvwxyz”,我想将它分成长度相等的不同部分。我尝试的解决方案如下,但不起作用。它只打印出一部分,在本例中为“aaa”。我不确定哪种字符串方法是最好的。我认为 substring 是可行的方法,但不确定如何正确实现它。
int splitSize = 5
String s = "aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooo";
for (int i = 0; i < s.length() / splitSize; i++) {
s = s.substring(i, i + 3);
}
最佳答案
假设您希望输出为字符串数组(您当前忽略输出;另一个选择是打印它)。然后你可以实现类似的东西
public static String[] split(String s, int splitSize) {
String[] result = new String[(s.length()+splitSize-1)/splitSize];
for (int i=0, j=0; i<s.length(); i+=splitSize) {
result[j++] = s.substring(i, Math.min(s.length(), i+splitSize));
}
return result;
}
这将返回一个包含 splitSize
个字符的连续子字符串的数组,如果无法填充,最后一个可能会比其余的小。如果您需要将它们均匀化,可以使用一个叫做Bresenham的东西的算法就是这样做的(尽管它更常用于绘制线条)
请注意,"1".substring(0,3)
会引发异常 - 您不应尝试获取比可用的子字符串更大的子字符串。
通过使用 if
语句或三元运算符 (?:
) 添加结果时,您可以避免使用 Math.min
.
关于java - 将字符串拆分为长度相等的子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35714550/