java - 将字符串拆分为长度相等的子字符串

标签 java string substring

我正在学习一个介绍性的 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/

相关文章:

java - 如何检索导致违反唯一约束的数据(通过 Hibernate)?

java - 跨语言(Java、C++、Python)系统使用哪个日志库

java - 当一个没有引用其封闭类的匿名类从实例方法返回时,它有一个对此的引用。为什么?

c - 按字典顺序排列的字符串的非重复排列

c++ - if else 语句和字符串长度之间的代码性能

MySQL 替换 : How replace all occurrences of a char in every distinct substring delimited by the same head and tail

java - Spring WebFlow2 Javascript仅适用于第一个单选按钮

JavaScript 将问题替换为 "vertical bar"

Python Regex 匹配字符串作为模式并返回数字

c - 使用 strstr 时出现奇怪的错误