gpt4 book ai didi

java - 包含不区分大小写的方法而无需进行重大代码更改?

转载 作者:行者123 更新时间:2023-12-01 12:22:28 24 4
gpt4 key购买 nike

有没有办法忽略 contains() 方法的大小写,但同时使代码片段或多或少相同?

/**
* This method returns a list of all words from the dictionary that include the given substring.
*
*/
public ArrayList<String> wordsContaining(String text)
{
int index = 0;
ArrayList<String> wordsContaining = new ArrayList<String>();
while(index<words.size())
{
if((words.get(index).contains(text)))
{
wordsContaining.add(words.get(index));
}
index++;
}
return wordsContaining;
}

这是整个 SpellChecker 类:

public class SpellChecker
{
private ArrayList<String> words;
private DictReader reader;

/**
* Constructor for objects of class SpellChecker
*/

public SpellChecker()
{
reader = new DictReader("words.txt");
words = reader.getDictionary();
}

/**
* This method returns the number of words in the dictionary.
*
*/
public int numberOfWords()
{
return words.size();
}

/**
* This method returns true, if (and only if) the given word is found in the dictionary.
*
*/
public boolean isKnownWord(String word)
{
int index =0;
while(index < words.size())
{
if(words.get(index).equals(word))
{
return true;
}
index++;
}
return false;
}

/**
* This method returns true if (and only if) all words in the given wordList are found in the dictionary.
*/
public boolean allKnown(ArrayList<String> wordList)
{
for(String word : wordList)
{
if(isKnownWord(word))
{
return true;
}

}
return false;
}

/**
* This method tests the allKnown method.
*/
public boolean testAllKnown()
{
ArrayList<String> testWords = new ArrayList<String>();
testWords.add("Abu");
testWords.add("Chou");
if(allKnown(testWords))
{
return true;
}
else
{
return false;
}

}

/**
* This method returns a list of all words from the dictionary that start with the given prefix.
*
*/
public ArrayList<String> wordsStartingWith(String prefix)
{
int index = 0;
ArrayList<String> wordsStartingWith = new ArrayList<String>();
while(index<words.size())
{
if(words.get(index).startsWith(prefix))
{
wordsStartingWith.add(words.get(index));

}
index++;
}
return wordsStartingWith;
}

/**
* This method returns a list of all words from the dictionary that include the given substring.
*
*/
public ArrayList<String> wordsContaining(String text)
{
int index = 0;
ArrayList<String> wordsContaining = new ArrayList<String>();
while(index<words.size())
{
if((words.get(index).contains(text)))
{
wordsContaining.add(words.get(index));
}
index++;
}
return wordsContaining;
}

DicReader 类只需获取给定的文本文件并从中“制作”字典。为了以防万一,我会把它贴出来:

public class DictReader
{
private ArrayList<String> dict;
private String filename;

/**
* Create a DictReader instance from a file.
*/

public DictReader(String filename)
{
loadDictionary(filename);
this.filename = filename;
}

/**
* Return the dictionary as a list of words.
*/
public ArrayList<String> getDictionary()
{
return dict;
}

/**
* Accept a new dictionary and save it under the same name. Use the new
* one as our dictionary from now on.
*/
public void save(ArrayList<String> dictionary)
{
try {
FileWriter out = new FileWriter(filename);
for(String word : dictionary) {
out.write(word);
out.write("\n");
}
out.close();
dict = dictionary;
}
catch(IOException exc) {
System.out.println("Error writing dictionary file: " + exc);
}
}

/**
* Load the dictionary from disk and store it in the 'dict' field.
*/
private void loadDictionary(String filename)
{
dict = new ArrayList<String>();

try {
BufferedReader in = new BufferedReader(new FileReader(filename));
String word = in.readLine();
while(word != null) {
dict.add(word);
word = in.readLine();
}
in.close();
}
catch(IOException exc) {
System.out.println("Error reading dictionary file: " + exc);
}
}
}

所以问题是我需要检查天气或给定的单词是否包含我称之为“文本”的文本片段/子字符串,但是字符串的 contains 方法是区分大小写的。我做了一些研究,并注意到要消除区分大小写,您必须导入特定的库,并且新的 contains 方法的语法不同,并且它与我当前的代码不能很好地配合。然后我想知道是否有一种方法可以使 contains() 不区分大小写,但保留代码的结构。

最佳答案

将两个字符串设为小写(或大写)

public ArrayList<String> wordsContaining(String text)
{
int index = 0;
text = text.toLowerCase();
ArrayList<String> wordsContaining = new ArrayList<String>();
while(index<words.size())
{
if((words.get(index).toLowerCase().contains(text)))
{
wordsContaining.add(words.get(index));
}
index++;
}
return wordsContaining;
}

关于java - 包含不区分大小写的方法而无需进行重大代码更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26576580/

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