gpt4 book ai didi

java - Java中的字符串替换和输出

转载 作者:行者123 更新时间:2023-12-01 18:42:35 27 4
gpt4 key购买 nike

我收到一个查询,请参阅下面的代码:

        public void readFile(String path,String pathName,int num){
try{
PrintWriter out2=new PrintWriter(new PrintWriter(path));
File a=new File(pathName);
Scanner b=new Scanner(a);


while(b.hasNextLine()){
String message=b.nextLine();
Scanner h=new Scanner(message);

while(h.hasNext()){
String f=h.next();
if (f.equals("are")){
f.replace("are","ARE");

}

}

out2.printf("%s",message);
out2.println();
.......

扫描仪读取的文件内容是

    who are you?
how are you?
what is up!

但是,当我运行上述代码时,新文件的输出与输入文件相同,这意味着“are”没有被“ARE”替换,我不知道哪部分是错误的,请指教,谢谢大家!

最佳答案

此行仅将消息未更改输出到新文件。

out2.printf("%s",message);

这个循环也很奇怪:为什么你要逐字读取它,然后使用 String.replace() ?您可以使用 String.replaceAll() 逐行执行此操作:

   while(h.hasNextLine()){
String message=b.nextLine();
out2.printf("%s",message.replaceAll("(^|\\W)are(\\W|$)"," ARE "));
}

(^|\\W)are(\\W|$) 字符串是一个正则表达式,具有匹配以字符串开头的所有内容的含义^,或非单词字符 (\\W),字符串 are,并以非单词字符或结尾行数($)...

由于扫描仪将空格作为默认分隔符,因此使用 (^|\\s)are(\\s|$) 可能会更好,但这两者都会替换之前的空格在“ARE”之后加一个空格 ()...

另外,请记住,String.replace 不会改变输入字符串...您必须分配结果,或以任何其他方式使用它,例如将其传递给函数...

关于java - Java中的字符串替换和输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19321891/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com