如何拆分arrayList String 学校工作 阳台 咬定 硝 BOLTON 俗气 CLIENTELE
我想把这些词分成“SCH”,“OOL”,“WO”,“RK”。
这是我的代码
import java.io.File;
import java.util.ArrayList;
public class HW2 {
public static ArrayList<String> getTiles(ArrayList<String> input_list_of_strings) {
// create a substring by go through the loop first, then .... (instruction)
Object[] subString = new Object[input_list_of_strings.size()];
for (int i = 0; i < input_list_of_strings.size(); i++) {
subString[i] = input_list_of_strings.get(i);
// test just want to see if subString get all String
// System.out.println(subString[i]);
String delim=" ";
String[] splitstrings = ((String) subString[i]).split(delim);
for (int j = 0; j < splitstrings.length; j++) {
splitstrings[j] +=delim;
System.out.println(splitstrings[j]);
}
}
return input_list_of_strings;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
ArrayList<String> input_words = new ArrayList<String>();
input_words.add("SCHOOLWORK");
input_words.add("BALCONY");
input_words.add("INSIST");
input_words.add("SALTPETER");
input_words.add("BOLTON");
input_words.add("KITSCHY");
input_words.add("CLIENTELE");
System.out.print(getTiles(input_words));
}
}
谢谢...
答案 0 :(得分:0)
首先遍历您的ArrayList<String>
。对于ArrayList中的每个单词,将其拆分为块。上面的例子没有多大意义 - 为什么“SCHOOLWORK”分为“SCH”,“OOL”,“WO”,“RK”而不是“SCHOOL”和“WORK”?如果不了解您的要求背后的逻辑,我们所能提供的只是一般性的建议。
所以,基本上:
// iterate through the arraylist
ArrayList<String> allWords; // instantiate this
...
for(String word : allWords) {
splitWord(word);
}
创建一个方法splitWord(String)
,它可以应用你需要的任何逻辑来分割它。如果您需要特定大小的单词,我建议您查看String的substring()
方法。
答案 1 :(得分:0)
我会使用一个接口来封装你想要拆分每个字符串的方式。
public static interface StringSplitter {
public List<String> splitString(String s);
}
然后你的'getTiles'方法就是:
public static ArrayList<String> getTiles(ArrayList<String> input,StringSplitter splitter) {
int initSize = input.size();
for(int i = 0; i < initSize; i++) {
String source = input.remove(0); //Remove from head
input.addAll(splitter.splitString(source)); //Add to end
}
return input;
}
注意:此方法修改原始列表,如果需要,可以很容易地修改它以简单地复制列表。虽然,我更喜欢这种方式。
由于分割这些单词的确切过程不清楚,我猜你想要将一个单词分成三个字符,除非只留下一个字符,然后再分成两个字符 - 否则不要拆分。所以你的默认'StringSplitter'将是:
public static final StringSplitter DEFAULT_SPLITTER = new StringSplitter() {
@Override
public List<String> splitString(String s) {
List<String> subs = new ArrayList();
while(!s.isEmpty()){
int splitsize = 0;
if(s.length() < 5) {
if(s.length() == 4) {
splitsize = 2;
} else {
splitsize = s.length();
}
} else {
splitsize = 3;
}
subs.add(s.substring(0,splitsize));
s = s.substring(splitsize);
}
return subs;
}
};
您的主要方法是:
public static void main(String[] args) {
// TODO Auto-generated method stub
ArrayList<String> input_words = new ArrayList<String>();
input_words.add("SCHOOLWORK");
input_words.add("BALCONY");
input_words.add("INSIST");
input_words.add("SALTPETER");
input_words.add("BOLTON");
input_words.add("KITSCHY");
input_words.add("CLIENTELE");
System.out.print(getTiles(input_words),DEFAULT_SPLITTER); //Make sure to use DEFAULT_SPLITTER
}