gpt4 book ai didi

java - 创建仅包含某些字符的 String[]

转载 作者:行者123 更新时间:2023-12-01 17:26:52 25 4
gpt4 key购买 nike

我正在尝试创建一个仅包含由某些字符组成的单词的String[]。例如,我有一本包含许多单词的字典,如下所示:

ARM 军队艺术作为在攻击试图注意力景点权威自动的苏醒婴儿后退坏的包余额

我想缩小列表范围,使其仅包含带有字符 abg 的单词。因此,在此示例中,列表应仅包含单词“bag”。目前我正在尝试使用正则表达式来做到这一点,但之前从未使用过它们,我似乎无法让它工作。这是我的代码:

public class LetterJugglingMain {
public static void main(String[] args) {
String dictFile = "/Users/simonrhillary/Desktop/Dictionary(3).txt";
fileReader fr = new fileReader();
fr.openFile(dictFile);
String[] dictionary = fr.fileToArray();
String regx = "able";
String[] newDict = createListOfValidWords(dictionary, regx);
printArray(newDict);
}

public static String[] createListOfValidWords(String[] d, String regex){
List<String> narrowed = new ArrayList<String>();
for(int i = 0; i<d.length; i++){
if(d[i].matches(regex)){
narrowed.add(d[i]);
System.out.println("added " + d[i]);
}
}
String[] narrowArray = narrowed.toArray(new String[0]);
return narrowArray;
}

但是,返回的数组始终为空,除非字符串正则表达式是确切的单词!有任何想法吗?如果需要,我可以发布更多代码...我想我一定是试图错误地初始化正则表达式。缩小范围的列表必须仅包含正则表达式中的字符。

最佳答案

坦白说,我不是正则表达式方面的专家,但我不认为它是实现您想要的功能的最佳工具。我会使用如下方法:

public boolean containsAll(String s, Set<Character> chars) {
Set<Character> copy = new HashSet<Character>();
for (int i = 0; i < s.length() && copy.size() < chars.size(); i++) {
char c = s.charAt(i);
if (chars.contains(c)) {
copy.add(c);
}
}
return copy.size() == chars.size();
}

关于java - 创建仅包含某些字符的 String[],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14184978/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com