java - 使用拆分在文件中搜索
问题描述
我有一个带有一些注册表的 users1.txt,例如:basketball president tom@gmail.com 1234
我让用户输入电子邮件、密码和微调器的两个选项,我想在文件中搜索它们并比较它们,如果它是真的,我会打印一条消息(open() 函数)。在下面的代码中,条件成功但仅针对文件的第一行,我想检查用户的每个输入的所有文件。更具体地说,我希望搜索不要停止,basketball president tom@gmail.com 1234
而是继续到第二行football referee tam@gmail.com 123123
等,直到文件结束。任何建议都会很棒。
signBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if( TextUtils.isEmpty(email.getText()))
email.setError("Email Required");
else if( TextUtils.isEmpty(password.getText()))
password.setError("Password Required");
else {
String text = readFromFile("users1.txt");
String[] splited = text.split("\\s+");
if(SportSpinner.getSelectedItem().toString().equals(splited[0]) && (UserSpinner.getSelectedItem().toString().equals(splited[1])) && (password.getText().toString().equals(splited[3])) && (email.getText().toString().equals(splited[2])))
open(SportSpinner.getSelectedItem().toString(), UserSpinner.getSelectedItem().toString());
else
{
if(tries==1)
open();
signBtn.startAnimation(shakeAnimation);
tries--;
message(tries);
}
}
}
});
}
private String readFromFile(String name){
StringBuilder text = new StringBuilder();
try {
File file = new File(getFilesDir().getAbsolutePath(),name);
BufferedReader br = new BufferedReader(new FileReader(file));
String line;
while ((line = br.readLine()) != null) {
text.append(line);
text.append('\n');
}
br.close();
}catch(IOException e){
Log.e("Exception", "File read failed: " + e.toString());
}
return String.valueOf(text);
}
解决方案
如果文件的行总是在相同编号的集合中,您可以使用循环来增加您检查的索引。如果您找到它,我还会添加某种标志以停止搜索。
boolean found = false;
for (int i = 0; i <= splitted.length-3 && !found; i += 4) {
if(SportSpinner.getSelectedItem().toString().equals(splited[i]) && (UserSpinner.getSelectedItem().toString().equals(splited[i+1])) && (password.getText().toString().equals(splited[i+3])) && (email.getText().toString().equals(splited[i+2]))) {
found = true;
// Your open method goes here
}
}
if (!found) {
// Now put all the code from the previous else statement here, since it has now searched the whole list for the one set of inputs
}
这会检查文件的每一行是否匹配,如果匹配则退出循环。
推荐阅读
- ruby-on-rails - 如何为 dockerized Rails 应用程序配置 circleCI?
- android - 无地图渲染 Android Studio
- swift - SBWebImage 内置视图指示器加载动画不显示,SWIFT
- jmeter - 如何在 JMeter 脚本中读取从站名称
- python - python - 如何在python中不导入日期时间的情况下将字符串日期时间转换为日期时间?
- c# - C# 字符串 + 与 +=
- c++ - Node* 类型值如何以 Iterator 类型返回?
- python - 为什么 tf.gradient 不返回任何内容?
- python - 删除嵌套 JSON 对象中的元素并将其展平
- asp.net - 如果文件扩展名为.tiff,则不会在 tinymce 中触发 images_upload_handler