我有一个文本文件中的位置列表。这些位置中的每个位置都有一个选中字符。示例AAAA = ALPHA,AAA1 = BRAVO,AAAC = DELTA,AAA2 =印度。 AAAA,AAA1,AAAC和AAA2是位置字符串。我有一个160万个带有校验字符的位置列表。这些位置由26个字母A-Z和0-9组成。
程序的第一部分返回所有与位置相同的校验字符。示例:用户输入位置ABCD,该位置的校验字符为-ALPHA。显示带有复选字符-ALPHA的所有位置。
程序的第二部分,我想找到与用户输入的字母或数字匹配的所有位置。示例用户输入带有校验字符ALPHA的10AZ。该程序将遍历文本文件,并找到所有以ALPHA结尾并且名称中包含0、1,A或Z的位置。
我尝试过使用正则表达式分割字符串,然后使用包含,但是并没有实现我想要的功能。答案可能很简单,但我似乎无法弄清楚,我也看过其他问题,但没有找到我想要的东西。
我编写的代码很杂乱,但是我现在正试图获得一个可行的解决方案。关于运行时间的任何建议都值得赞赏。
我尝试使用一种字谜方法,并试图使其对我有用,但我只是弄乱了代码。我还尝试过将字符串存储在数组中,并遍历数组的每个索引,但结果不正确。
// The name of the file to open.
String fileName = "Sn.txt";
// User input for the location
String UserInput = "10AZ";
String CheckCharacter;
//RC method finds the check character for the location
CheckCharacter = Check2.RC(UserInput);
//getPhonetic gives back the phonetic associated with check character
String NewCC = Check2.getPhonetic(CheckCharacter);
String line = null;
try {
FileReader fileReader =
new FileReader(fileName);
// Always wrap FileReader in BufferedReader.
BufferedReader bufferedReader =
new BufferedReader(fileReader);
int count =0;
while((line = bufferedReader.readLine()) != null) {
if(line.endsWith(NewCC)) {
count++;
System.out.println(line);
//System.out.println(isAnagram(UserInput, line) + "USER INPUT");
}
//System.out.println(line);
}
System.out.println(count);
bufferedReader.close();
}
catch(FileNotFoundException ex) {
System.out.println("Unable to open file '" + fileName + "'");
}
我想要这样的结果: 用户输入以Delta结尾的位置10AZ。 1.显示以Delta结尾的所有位置-我已经在工作。 2.所有以Delta结尾并以1,0,A和Z开头的位置。 3.所有以Delta结尾并包含1,0,A和Z的位置。
任何建议都值得赞赏,不需要任何代码,只需向正确的方向轻推即可。
答案 0 :(得分:0)
这里有一些我不能发表评论的提示:
所有以Delta结尾并以1,0,A和Z开头的位置
为此,您可以使用正则表达式,如下所示:
String input;
// fill input string
input.matches("^[1OAZ]$");
您可以将1OAZ替换为基本说的任何字符串,或者替换为1或O或A或Z。
所有以Delta结尾并包含1,0,A和Z的位置。
您可以按照您所说的使用包含
String input;
// fill input string
if(input.contains("1") || input.contains("O") ...){
// do something
在这种情况下,可以从字符串“ 1OAZ”中检索所有字符,可以使用toCharArray函数并遍历字符,也可以使用split:
char[] chars = string.toCharArray();
String[] strChars = string.split("");
// iterate over chars
for(...) {
if(input.contains(singleCharHere)
// do something
当然,使用regex可以实现相同的结果,但是在这种情况下它更复杂。希望这会有所帮助。