java - 从字符串创建子字符串数组

标签 java arrays arraylist

我有一个没有空格的字符串,我想创建一个由单词的子字符串组成的数组。例如,假设字符串是 stackoverflow 数组应该是这样的:

[sta, cko, ver, flo, w]

我使用的代码如下,它只提供了第一项。任何帮助将不胜感激。

public static ArrayList<String> getWords(String s){
    ArrayList<String> words = new ArrayList<String>();
    for(int i=0;i<s.length(); i=i+3){
        words.add(s.substring(i, 3));
    }
    return words;
}

最佳答案

您的代码有两个问题。一、中的“3”

s.substring(i, 3)

表示从字符串开头开始的第 3 个索引,而不是从 i 开始的第 3 个索引,所以您需要

s.substring(i, i + 3)

其次,如果字符串比 i + 3 短,你会得到一个异常。要解决这个问题,您可以使用 Math.min。它看起来像这样:

public static ArrayList<String> getWords(String s){
ArrayList<String> words = new ArrayList<String>();
for(int i=0;i<s.length(); i=i+3){
    words.add(s.substring(i, Math.min(i + 3, i.length())));
}
return words;

关于java - 从字符串创建子字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44231684/

相关文章:

java - 初学者 Android : ListView to affect the next class

java - 如何查看数据库上的所有用户 - JDBC Struts

javascript - 在javascript中从子对象属性访问父对象

java - 适配器如何处理android中的空arrayList?

java - 默认 Java 堆大小及其可能导致的内存问题

java - 在 Web 应用程序或 Web 服务中使用实用程序类?

C - 如何确保数组包含 8 个值为 0 或 1 的整数?

javascript - 为什么直接在 Array 实例上调用 Array.prototype.map 会产生 "unmodified"数组?

java - Java for 循环中的列表列表

java - 访问 ArrayList 内部的 ArrayList 时出现 ArrayOutOfBoundsException