我正在尝试将字符串中的空格替换为连字符。
String replaceText = "AT AT";
replaceText.replace(' ', '-');
但是当我这样做时,似乎无法替换字符。我尝试了replaceAll()
方法,它也不起作用。
++++++答案+++++++
抱歉,这是我的错误...夜间编程的结果:(
谢谢你的回答,可能我不能回答所有问题,所以我会检查第一个答案。
replaceText = replaceText.replace(' ', '-');
我正在尝试将字符串中的空格替换为连字符。
String replaceText = "AT AT";
replaceText.replace(' ', '-');
但是当我这样做时,似乎无法替换字符。我尝试了replaceAll()
方法,它也不起作用。
++++++答案+++++++
抱歉,这是我的错误...夜间编程的结果:(
谢谢你的回答,可能我不能回答所有问题,所以我会检查第一个答案。
replaceText = replaceText.replace(' ', '-');
replaceText = replaceText.replace(' ', '-');
字符串是不可变的对象,即创建后无法更改。所有能够修改字符串的方法都会返回一个包含了修改后内容的新字符串。
你需要保存replace()
返回的值。如果你想要替换多个出现,使用replaceAll()
。
String replaceText = "AT AT";
replaceText = replaceText.replaceAll(" ", "-");
正如@Mark Peters在评论中指出的那样,replace(Char, Char)
足以替换所有出现的字符,并且速度更快。
String replaceText = "AT AT";
replaceText = replaceText.replace(' ', '-');
如果这个事实让你烦恼:不可变性是一件好事。
replace(char, char)
方法替换所有出现的字符,与其重载版本replace(CharSequence, CharSequence)
一样。如果使用replaceAll
方法加入正则表达式,则退步了,因为现在需要考虑转义特殊字符,并且性能会更差。 - Mark Petersreplace
和replaceAll
方法返回一个替换后的字符串。你是使用返回值,还是期望replaceText
字符串发生改变?如果是后者,你将看不到任何改变,因为字符串是不可变的。
String replaceText = "AT AT";
String replaced = replaceText.replace(' ', '-');
// replaced will be "AT-AT", but replaceText will NOT change
String replaceText = "AT AT";
replaceText = replaceText.replace(' ', '-');
字符串是不可变的。您需要使用replace的返回值:
replaceText = replaceText.replace(' ', '-');
/*You can use below method pass your String parameter and get result as String spaces replaced with hyphen*/
private static String replaceSpaceWithHypn(String str) {
if (str != null && str.trim().length() > 0) {
str = str.toLowerCase();
String patternStr = "\\s+";
String replaceStr = "-";
Pattern pattern = Pattern.compile(patternStr);
Matcher matcher = pattern.matcher(str);
str = matcher.replaceAll(replaceStr);
patternStr = "\\s";
replaceStr = "-";
pattern = Pattern.compile(patternStr);
matcher = pattern.matcher(str);
str = matcher.replaceAll(replaceStr);
}
return str;
}
String replaceText = "AT AT";
StringBuilder sb = new StringBuilder(replaceText);
sb.Replace(' ', '-');