从Java中的String中删除字符

时间:2011-04-17 18:47:42

标签: java string

我尝试使用以下代码删除文件名的.xml部分:

String id = fileR.getName();
              id.replace(".xml", "");
              idList.add(id);

问题是它没有删除它,我不知道为什么它不会删除目标文本。

编辑 :实际上我发现替换函数找不到.xml,所以我想问题是,如何摆脱最后4个字符?

这是传入的字符串:

0b14d501a594442a01c6859541bcb3e8164d183d32937b851835442f69d5c94e.xml

谢谢,

8 个答案:

答案 0 :(得分:42)

java中的字符串是不可变的。这意味着您需要创建一个新字符串或覆盖旧字符串以实现所需的效果:

id = id.replace(".xml", "");

答案 1 :(得分:10)

你不能用

id = id.substring(0, id.length()-4);

埃里克说,当然。

答案 2 :(得分:3)

字符串是不可变的,因此当您操作它们时,您需要将结果分配给字符串:

String id = fileR.getName();
id = id.replace(".xml", ""); // this is the key line
idList.add(id);

答案 3 :(得分:2)

String是不可变的。因此,String.replace()不会修改id,而是返回具有适当值的新String。因此,您希望使用id = id.replace(".xml", "");

答案 4 :(得分:1)

String id = id.substring(0,id.length()-4)

答案 5 :(得分:0)

仅当令牌位于字符串末尾时,这才可以安全删除。

StringUtils.removeEnd(string, ".xml");
  

Apache StringUtils函数为null,empty和没有匹配安全性

答案 6 :(得分:0)

科特林溶液

Kotlin为此内置了功能removeSuffixDocumentation

var text = "filename.xml"
text = text.removeSuffix(".xml") // "filename"

如果字符串中不存在后缀,则仅返回原始后缀

var text = "not_a_filename"
text = text.removeSuffix(".xml") // "not_a_filename"

您还可以签出相似的removePrefixremoveSurrounding

答案 7 :(得分:0)

Java字符串是不可变的。但是您有很多选择:

您可以使用:

使用StringBuilder类,因此您可以删除所需的所有内容并控制字符串。

替换方法。

您实际上可以使用循环£: