yam*_*ams 77 java string replace
我有一个以字符串形式传入的句子,我正在对"和"这个词进行替换,我想用""替换它.它并没有用空格替换"和"这个词.以下是我的逻辑示例.当我调试它时,逻辑确实属于sentence.replace.
String sentence = "Define, Measure, Analyze, Design and Verify"
if (sentence.contains("and")){
sentence.replace("and", " ");
}
Run Code Online (Sandbox Code Playgroud)
这里有什么我想念的东西.
Jon*_*eet 166
当我调试它时,逻辑确实属于sentence.replace.
是的,然后您丢弃返回值.
Java中的字符串是不可变的 - 当您调用时replace,它不会更改现有字符串的内容- 它会返回带有修改的新字符串.所以你要:
sentence = sentence.replace("and", " ");
Run Code Online (Sandbox Code Playgroud)
这适用于所有的字符串(方法substring,toLowerCase等等).它们都没有改变字符串的内容.
请注意,您并不需要在某种情况下执行此操作 - 毕竟,如果该句子不包含"and",则执行替换不会造成任何损害:
String sentence = "Define, Measure, Analyze, Design and Verify";
sentence = sentence.replace("and", " ");
Run Code Online (Sandbox Code Playgroud)
Kum*_*tra 68
字符串是不可变的,意味着它们的内容不能改变.当你打电话给replace(this,that)你时,你会得到一个全新的字符串.如果要保留此新副本,则需要将其分配给变量.您可以覆盖旧引用(la sentence = sentence.replace(this,that)或新引用,如下所示:
public class Test{
public static void main(String[] args) {
String sentence = "Define, Measure, Analyze, Design and Verify";
String replaced = sentence.replace("and", "");
System.out.println(replaced);
}
}
Run Code Online (Sandbox Code Playgroud)
顺便说一句,请注意我已经删除了contains()支票,因为这是一个不必要的电话.如果它不包含它,则替换将无法进行任何替换.如果要替换的内容与您正在检查的实际条件不同,则只需要包含方法.
你没有做任何有关返回值的事情replace.您需要分配方法的结果,这是新的String:
sentence = sentence.replace("and", " ");
Run Code Online (Sandbox Code Playgroud)
A String在java中是不可变的.方法就像replace返回一个新的String.
您的contains测试是不必要的:replace如果没有要替换的文本实例,则只会禁止操作.
您应该重新分配替换的结果,如下所示:
sentence = sentence.replace("and", " ");
Run Code Online (Sandbox Code Playgroud)
要注意的是,String类是不可变的,这意味着所有的它的方法返回一个新字符串,但不会改变就地原始字符串,所以在一个实例调用方法的结果String必须分配给一个变量或立即使用的改变生效.
| 归档时间: |
|
| 查看次数: |
434312 次 |
| 最近记录: |