我有一个这样的字符串:
mysz = "name=john age=13 year=2001";
我想删除字符串中的空格。我尝试了trim(),但这只删除了整个字符串前后的空格。我还尝试了replaceAll(“\\W”,“”),但随后=也被删除。
如何通过以下方式实现字符串:
mysz2 = "name=johnage=13year=2001"
我有一个这样的字符串:
mysz = "name=john age=13 year=2001";
我想删除字符串中的空格。我尝试了trim(),但这只删除了整个字符串前后的空格。我还尝试了replaceAll(“\\W”,“”),但随后=也被删除。
如何通过以下方式实现字符串:
mysz2 = "name=johnage=13year=2001"
当前回答
st.replaceAll(“\\s+”,“”)删除所有空格和不可见字符(例如,tab,\n)。
st.replaceAll(“\\s+”,“”)和st.replaceAll(“\\s”,“)产生相同的结果。
第二个正则表达式比第一个正则表达式快20%,但随着连续空格数的增加,第一个正则正则表达式的性能比第二个更好。
如果不直接使用,则将值分配给变量:
st = st.replaceAll("\\s+","")
其他回答
将每组文本分隔成自己的子字符串,然后连接这些子字符串:
public Address(String street, String city, String state, String zip ) {
this.street = street;
this.city = city;
// Now checking to make sure that state has no spaces...
int position = state.indexOf(" ");
if(position >=0) {
//now putting state back together if it has spaces...
state = state.substring(0, position) + state.substring(position + 1);
}
}
有许多方法可以解决这个问题。您可以使用拆分函数或替换字符串的函数。
有关更多信息,请参阅微笑问题http://techno-terminal.blogspot.in/2015/10/how-to-remove-spaces-from-given-string.html
import java.util.*;
public class RemoveSpace {
public static void main(String[] args) {
String mysz = "name=john age=13 year=2001";
Scanner scan = new Scanner(mysz);
String result = "";
while(scan.hasNext()) {
result += scan.next();
}
System.out.println(result);
}
}
你应该使用
s.replaceAll("\\s+", "");
而不是:
s.replaceAll("\\s", "");
这样,它将在每个字符串之间使用多个空格。上述正则表达式中的+符号表示“一个或多个\ s”
--\s=任何空格字符(包括空格、制表符等)。为什么这里需要s+?
这个问题最正确的答案是:
String mysz2 = mysz.replaceAll("\\s","");
我只是根据其他答案改编了这段代码。我之所以发布它,是因为除了完全符合问题的要求之外,它还表明结果是作为一个新字符串返回的,原始字符串并没有像某些答案那样被修改。
(有经验的Java开发人员可能会说“当然,您实际上不能修改字符串”,但这个问题的目标受众可能不知道这一点。)