<分区>
这里是问题说明:
编写一个静态方法 getBigWords,它获取单个 String 参数并返回一个数组,其元素是参数中包含超过 5 个字母的单词。 (单词被定义为连续的字母序列。) 示例:因此,如果传递给该方法的字符串参数是“加拿大有 87,000,000 人”,getBigWords 将返回一个包含两个元素的数组,即“人”和“加拿大”。 另一个例子:如果传递给方法的字符串参数是“将请求发送到 support@turingscraft.com”,getBigWords 将返回一个包含三个元素的数组,“request”、“support”和“turingscraft”。
我的方法是声明一个可变长度数组,并将字符串序列拆分为标记 block 。然后我将 token 片段传递给一个方法。本质上,我想检查数组中包含 5 个以上元素的每个标记元素是否具有连续的字母序列。如果不是,则跳出循环并移动到下一个标记。如果是这样,将 token 中的每个字母添加到一个新的字符串构建器数组中。然后,当所有循环迭代完成后,我将 String builder 数组作为字符串数组返回。然后我将返回值分配给可变长度数组。
我正在尝试弄清楚如何声明数组字符串生成器。该数组的长度必须可变,以便我可以将字母附加到每个元素。
这是我的代码。
public static String getBigWords(String string){
String[] tokens = string.split(" ");
java.util.ArrayList<String> array = new ArrayList<String>();
array = isNoDigit(tokens);
public static String isNodigit(String[] param);
StringBuilder[] builder = new StringBuilder[param.length];
for (int i = 0; param.length(); i++){
if (param[i].length() > 5){
for (int j = 0; j < param[i].length(); j++)
if ((Character.isLetter(param[i].charAt(j))){
builder.append(param[i].charAt(j));
}
else
break;
}
}
}
return builder.toString
}
return array.toArray(new String[0]);
}
更新代码:
public static String[] getBigWords(String sequence) {
sequence = sequence.replace("@", " ");
sequence = sequence.replace(".", " ");
sequence = sequence.replaceAll("\\d+.", "");
java.util.ArrayList<String> array = new java.util.ArrayList<String>();
String[] tokens = sequence.split(" ");
for (int i = 0; i < tokens.length(); i++) {
if (tokens[i].length() > 5) {
array.add(tokens[i]);
}
}
return array.toArray(new String[0]);
}