英文:
how to skip a character when read strings from a file in Java
问题
例如,文件的内容如下:
black=white
bad=good
easy=hard
因此,我希望将这些词存储在一个映射中,其中词作为键和值(例如:{black=white, bad=good})。我的问题是,当我读取字符串时,我必须跳过一个字符'=',这会使键和值消失。如何实现这个?
在下面的代码中,我编写了一个从文件中读取键和值的代码,但这个代码只在单词之间有空格时才有效,但我需要'='。
System.out.println("文件名:");
String pathToFile = in.nextLine();
File cardFile = new File(pathToFile);
try(Scanner scanner = new Scanner(cardFile)){
while(scanner.hasNext()) {
key = scanner.next();
value = scanner.next();
flashCards.put(key, value);
}
}catch (FileNotFoundException e){
System.out.println("未找到文件:" + pathToFile);
}
英文:
For example, the content of a file is:
black=white
bad=good
easy=hard
So, I want to store in a map this words as key and value (ex: {black=white, bad=good} ). And my problem is when I read string I have to skip a char '=' which disappears key and value. How to make this?
In code below I make a code which read key and value from file, but this code works just when between words is SPACE, but I have to be '='.
System.out.println("File name:");
String pathToFile = in.nextLine();
File cardFile = new File(pathToFile);
try(Scanner scanner = new Scanner(cardFile)){
while(scanner.hasNext()) {
key = scanner.next();
value = scanner.next();
flashCards.put(key, value);
}
}catch (FileNotFoundException e){
System.out.println("No file found: " + pathToFile);
}
答案1
得分: 3
使用Java中的String
的split
方法。
所以在读取你的行之后,分割字符串并取键和值如下。
String[] keyVal = line.split("=");
System.out.println("key is ", keyVal[0]);
System.out.println("value is ", keyVal[1]);
英文:
Use the split
method of String
in Java.
so after reading your line, split the string and take the key and value as so.
String[] keyVal = line.split("=");
System.out.println("key is ", keyVal[0]);
System.out.println("value is ", keyVal[1]);
答案2
得分: 1
你可以更改扫描器的分隔符。
public static void main(String[] args) throws java.lang.Exception {
String s = "black=white\nbad=good\neasy=hard";
Scanner scan = new Scanner(s);
scan.useDelimiter("\\n+|=");
while (scan.hasNext()) {
String key = scan.next();
String value = scan.next();
System.out.println(key + ", " + value);
}
}
输出:
black, white
bad, good
easy, hard
更改分隔符可能会有些棘手,最好的方法可能是读取每行,然后解析它。例如,\\n+|=
将通过一个或多个换行符或等号来分割标记。然而,换行符在某种程度上是硬编码的,所以它可能会根据创建文件的平台而变化。
英文:
You can change the delimiter for the scanner.
public static void main (String[] args) throws java.lang.Exception
{
String s = "black=white\nbad=good\neasy=hard";
Scanner scan = new Scanner(s);
scan.useDelimiter("\\n+|=");
while(scan.hasNext()){
String key = scan.next();
String value = scan.next();
System.out.println(key + ", " + value);
}
}
The output:
>black, white
bad, good
easy, hard
Changing the delimiter can be tricky, and it could be better to just read each line,then parse it. For example, "\\n+|="
will split the tokens by either one or more endlines, or an "=". The end line is somewhat hard coded though so it could change depending on the platform the file was created on.
答案3
得分: -1
A simple "if" condition will solve it.
if (key == '='){ break;}
英文:
A simple "if" condition will solve it.
if (key == '='){ break;}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论