我对java还是新手。是否有办法获取已替换的新字符串?
import java.io.*;
public class Test {
public static void main(String args[]) {
String str = new String("wew");
System.out.println(str.replaceAll("w", "61"));
System.out.println(str.replaceAll("e", "31"));
}
}
输出:
61e61
w31w
期望的新输出:
613161
我想得到输出字符串61e61
然后将e
替换为31
让我们回顾一下为什么您的代码没有提供您所期望的。
创建一个带有"wew"的实例。
String str = new String("wew");
然后将“wew”中的“w”替换为“61”,并打印结果“61e61”
System.out.println(str.replaceAll("w", "61")); //61e61
现在,这里重要的部分是str.replaceAll
的结果是一个新的实例,所以str
仍然是wew。
System.out.println(str); // wew
这解释了为什么第二次替换将打印“w31w”
System.out.println(str.replaceAll("e", "31")); //w31w
原因是String
是不可变的,所以当您尝试更改不可变实例的值时,会返回一个新实例。因此,为了保留它,您需要将该实例分配给html" target="_blank">变量。
str = str.replaceAll("w", "61");
现在,结果保存在变量“str”中
System.out.println(str); // 61e61
现在,不可变类的一个好处是方法通常可以被链接,因为返回值是类本身的实例。所以你可以同时调用多个方法。
str = str.replaceAll("w", "61").replaceAll("e", "31");
System.out.println(str); // 613161
但是,如果要打印中间结果,则需要在两条语句中完成
str = str.replaceAll("w", "61");
System.out.println(str); // 61e61
System.out.println(str = str.replaceAll("e", "31")); // 613161
注意最后一条语句,可以合并赋值和打印语句。首先将计算str=...,然后将打印结果。
你用错了。类字符串的方法replaceAll
返回一个字符串。
您必须再次使用返回值(可以写在一行中):
String str = "wew".replaceAll("w", "61").replaceAll("e", "31");
System.out.println(str);
输出:613161
您可以将replaceAll
链接为:
System.out.println(str.replaceAll("w", "61").replaceAll("e", "31"));
目前,您正在返回两个不同的字符串和两个print语句。
System.out.println(str.replaceAll("w", "61")); // returns new string '61e61'
System.out.println(str.replaceAll("e", "31")); // returns new string 'w31w'
问题内容: 我在MySQL数据库中有一个带有以下各列的表 网址就像: 我想将所有网址更新到另一个域 保持文件名不变。 我必须运行什么查询? 问题答案:
我有一个包含逗号的字符串。但是,我想用一点代替逗号。这一定是可能的,不幸的是我做不到。我不只是要拿回来。5。不幸的是,逗号只去掉了所有的东西。
我有这样的桌子: 在该
问题内容: 我有一个用逗号分隔的产品列表,并且由于该项目列表已被新产品项目替换,因此我试图用新产品项目列表来修改此CSV列表。 我正在尝试使用split fn转换为行,然后替换这些值,然后再次将列转换为行。还有其他可能吗? 输出为: 问题答案: 将您的逗号分隔列表转换为XML。使用数字表XQuery和获取具有它们在字符串中的位置的单独ID。使用带有to和order by的技巧构建逗号分隔的字符串。
假设我有一个字符串,如下所示: 我想把“abcd”换成“dddd”。我曾试图做这样的事: 它不起作用。有什么建议吗? 编辑:更具体地说,我在Java工作,我试图解析超文本标记语言文档,具体地说
像这样的空字符串isnull()找不到空字符串