簡體   English   中英

從 Java 中的文件讀取字符串時如何跳過字符

[英]how to skip a character when read strings from a file in Java

例如,一個文件的內容是:

黑=白

壞=好

容易=困難

所以,我想將這個詞作為鍵和值存儲在 map 中(例如: {black=white, bad=good} )。 我的問題是當我讀取字符串時,我必須跳過一個字符'=',它會消失鍵和值。 這個怎么做?

在下面的代碼中,我編寫了一個從文件中讀取鍵和值的代碼,但是該代碼僅在單詞之間為空格時才有效,但我必須是“=”。

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);
    }

使用Java中Stringsplit方法。

因此,在閱讀您的行之后,拆分字符串並按原樣獲取鍵和值。

String[] keyVal = line.split("=");
System.out.println("key is ", keyVal[0]);
System.out.println("value is ", keyVal[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);
    }
}

output:

黑,白
壞的,好的
容易的,困難的

更改分隔符可能很棘手,最好只讀取每一行,然后解析它。 例如, "\\n+|="將用一個或多個端線或“=”分割標記。 結束行有些硬編碼,因此它可能會根據創建文件的平台而改變。

一個簡單的“如果”條件將解決它。

if (key == '='){ break;}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM