修改文本文件 - Android

时间:2015-08-03 22:55:48

标签: android regex file

我正在尝试从我的应用程序中读取/sdcard/test.txt中的文本文件。我成功地将它读入缓冲区并重新编写它。正则表达式在一个在线测试器中工作,所以我不认为这是问题所在。我认为我的repalceAll()方法并不坚持。当我打开文件时,没有任何改变。我知道如何创建/覆盖文本文件,但是如何更改其中的特定字符串呢?

这是我到目前为止所拥有的:

fileName = Environment.getExternalStorageDirectory().getPath() + "/" + fileName;
        File file = new File(fileName);
        /*Toast.makeText(getBaseContext(),
                fileName, Toast.LENGTH_SHORT).show();*/


        try
        {
            BufferedReader buffer = new BufferedReader(new FileReader(fileName));
            String sCurrentLine;

            while ((sCurrentLine = buffer.readLine()) != null) {
                Toast.makeText(getBaseContext(), sCurrentLine, Toast.LENGTH_SHORT).show();
                regex(sCurrentLine);
            }
            buffer.close();

        } catch (IOException e) {
            e.printStackTrace();
        }

    }


    public static void regex(String chord) {
        //String notes = "^[CDEFGAB]";
        String notes = "^[C]";
        String accidentals = "[#|##|b|bb]";
        //String chords = "[maj7|maj|min7|min|sus2]";
        String regex = notes + accidentals;
        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(chord);
        //System.out.println("regex is " + regex);
        if (matcher.find()) {
            regex.replaceAll(regex, "D");
            int i = matcher.start();
            int j = matcher.end();
            //System.out.println("i:" + i + " j:" + j);
        }
        else {
            //System.out.println("no match!");
        }
    }

1 个答案:

答案 0 :(得分:0)

看起来String.replaceAll()不会修改参数,而是返回一个新字符串。但是,您没有在代码中以任何方式使用返回值,因此这可能是您的问题。 String是不可变的,对其进行修改的方法将始终返回一个全新的String。