我有一个这样的字符串:
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"
当前回答
您还可以查看下面的Java代码。以下代码不使用任何“内置”方法。
/**
* Remove all characters from an alphanumeric string.
*/
public class RemoveCharFromAlphanumerics {
public static void main(String[] args) {
String inp = "01239Debashish123Pattn456aik";
char[] out = inp.toCharArray();
int totint=0;
for (int i = 0; i < out.length; i++) {
System.out.println(out[i] + " : " + (int) out[i]);
if ((int) out[i] >= 65 && (int) out[i] <= 122) {
out[i] = ' ';
}
else {
totint+=1;
}
}
System.out.println(String.valueOf(out));
System.out.println(String.valueOf("Length: "+ out.length));
for (int c=0; c<out.length; c++){
System.out.println(out[c] + " : " + (int) out[c]);
if ( (int) out[c] == 32) {
System.out.println("Its Blank");
out[c] = '\'';
}
}
System.out.println(String.valueOf(out));
System.out.println("**********");
System.out.println("**********");
char[] whitespace = new char[totint];
int t=0;
for (int d=0; d< out.length; d++) {
int fst =32;
if ((int) out[d] >= 48 && (int) out[d] <=57 ) {
System.out.println(out[d]);
whitespace[t]= out[d];
t+=1;
}
}
System.out.println("**********");
System.out.println("**********");
System.out.println("The String is: " + String.valueOf(whitespace));
}
}
输入:
String inp = "01239Debashish123Pattn456aik";
输出:
The String is: 01239123456
其他回答
replaceAll("\\s","")
\w=任何单词字符
\W=任何非单词字符(包括标点符号等)
\s=任何空格字符(包括空格、制表符等)
\S=非空格字符的任何内容(包括字母和数字以及标点符号等)
(编辑:如前所述,如果您希望到达正则表达式引擎,则需要转义反斜杠,从而导致\\s。)
public static String removeWhiteSpaces(String str){
String s = "";
char[] arr = str.toCharArray();
for (int i = 0; i < arr.length; i++) {
int temp = arr[i];
if(temp != 32 && temp != 9) { // 32 ASCII for space and 9 is for Tab
s += arr[i];
}
}
return s;
}
这可能会有所帮助。
st.replaceAll(“\\s+”,“”)删除所有空格和不可见字符(例如,tab,\n)。
st.replaceAll(“\\s+”,“”)和st.replaceAll(“\\s”,“)产生相同的结果。
第二个正则表达式比第一个正则表达式快20%,但随着连续空格数的增加,第一个正则正则表达式的性能比第二个更好。
如果不直接使用,则将值分配给变量:
st = st.replaceAll("\\s+","")
可以使用isWhitespace函数从字符类中删除空白。
public static void main(String[] args) {
String withSpace = "Remove white space from line";
StringBuilder removeSpace = new StringBuilder();
for (int i = 0; i<withSpace.length();i++){
if(!Character.isWhitespace(withSpace.charAt(i))){
removeSpace=removeSpace.append(withSpace.charAt(i));
}
}
System.out.println(removeSpace);
}
如果您更喜欢实用程序类而不是正则表达式,那么Spring Framework中的StringUtils中有一个方法trimAllWhitespace(String)。