java - 返回超过 5 个字母的字符串单词数组

标签 java

<分区>

这里是问题说明:

编写一个静态方法 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]);
}           

最佳答案

我相信这就是您想要的。显然,您需要获取代码并按需要实现它。这为您提供了如何使用正则表达式以更简单的方式实现最终目标的要点。这会找到任何大于 5 个字母的单词(仅限字母 a-z,大写或小写)并将它们添加到 ArrayList 对象。

import java.util.*;
import java.util.regex.*;

public class Test
{
    public static void main(String[] args)
    {
        String s = "There are 87,000,000 people in Canada";
        List<String> allMatches = new ArrayList<String>();
        Matcher m = Pattern.compile("([a-zA-Z]{6,})").matcher(s);

        while (m.find())
        {
            allMatches.add(m.group());
        }
    }
}

如果你想了解更多关于正则表达式的知识,我推荐这个教程:regexone

关于java - 返回超过 5 个字母的字符串单词数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23452076/

相关文章:

java - 谷歌应用引擎服务不可用

java - 独立应用程序的数据源 - 无应用程序服务器

java - Hibernate 自引用映射之谜

java - Android Nougat、Oreo - 如何将长按操作添加到快速切换?

java - PrintWriter 和 PrintStream 从不抛出 IOExceptions

java - Polar 心率传感器不可用作 google fit api 中的数据源 (xamarin android)

java - 为什么不同的谓词接口(interface)n JAVA 8?

java - 为什么 createNewFile() 无法识别它的导入?

java - 如何根据用户类型获取各自的阶段?

java - 如何使用 Android 移动应用程序单击网页上的按钮