我已经阅读了在该论坛上发布的几个类似问题,但是我的问题略有不同。我确实想编辑第一行,但是诀窍在于可以有几行可以具有相同的值。例如,在一百名学生中,至少有三分之二可能具有相同的名字。在这种限制下,我决定为每个学生分配一个唯一的卷号。因此最终的文本文件将如下所示----
伦哈德
欧拉
123
卡尔
瓜斯
234
伦哈德
加洛瓦
345
现在,假设用户想要编辑学生姓名Leonhard的名字,那么我该如何编程,使得只说345的名字被编辑?
请帮忙.......
谢谢。
最佳答案
我不确定我是否理解您的要求。
如果您可以读取整个文件中的字符串,则可以使用String类的方法replaceFirst:
字符串replaceFirst(字符串正则表达式,字符串替换)
用给定的替换项替换与给定的正则表达式匹配的此字符串的第一个子字符串。
因为第一个参数是一个正则表达式,所以您可以使用它来查找要更新的记录。
System.out.println("Giulio Cesare 000, Marco Aurelio 001, Marco Altieri 002, Pinco Pallino 003".replaceFirst("Marco (.*) 001", "Mario $1 001"));
在此示例中,我使用了逗号分隔的字符串,但是为包含多行的字符串编写正则表达式并不难。
例如,以下正则表达式应该起作用:
System.out.println("Giulio\r\nCesare\r\n000\r\nMarco\r\nAurelio\r\n001\r\nMarco\r\nAltieri\r\n002\r\nPinco\r\nPallino 003".replaceFirst("Marco\r\n(.*)\r\n001", "Mario\r\n$1\r\n001"));