从Java中删除字符串中的空格

Removing whitespace from strings in Java

我有一个像这样的字符串:

1
mysz ="name=john age=13 year=2001";

我想删除字符串中的空格。 我尝试了trim()但这只删除了整个字符串之前和之后的空格。 我也试过replaceAll("\\W","")但是=也被删除了。

如何通过以下方式实现字符串:

1
mysz2 ="name=johnage=13year=2001"


st.replaceAll("\\s+","")删除所有空格和不可见字符(例如,tab,
)。

st.replaceAll("\\s+","")st.replaceAll("\\s","")产生相同的结果。

第二个正则表达式比第一个正则表达式快20%,但随着连续空格数量的增加,第一个正则表达式优于第二个正则表达式。

如果不直接使用,请将值分配给变量:

1
st = st.replaceAll("\\s+","")


1
replaceAll("\\s","")

\w =任何单词字符

\w =任何不是单词字符的内容(包括标点等)

\s =任何空格字符(包括空格,制表符等)

\s =任何不是空格字符的东西(包括字母和数字,以及标点符号等)

(编辑:正如所指出的,如果希望\s到达正则表达式引擎,则需要转义反斜杠,从而产生\\s。)


这个问题最正确的答案是:

1
String mysz2 = mysz.replaceAll("\\s","");

我刚从其他答案中修改了这段代码。我发布它是因为除了正是问题所要求的,它还表明结果作为新字符串返回,原始字符串不会被修改,因为某些答案有点暗示。

(有经验的Java开发人员可能会说"当然,你实际上无法修改字符串",但这个问题的目标受众可能不知道这一点。)


replaceAll("\\s","")怎么样?请参考这里。


处理字符串操作的一种方法是来自Apache commons的StringUtils。

1
String withoutWhitespace = StringUtils.deleteWhitespace(whitespaces);

你可以在这里找到它。
commons-lang包括更多,并得到很好的支持。


如果您还需要删除不可破坏的空格,可以像这样升级代码:

1
st.replaceAll("[\\s|\\u00A0]+","");


如果您更喜欢实用程序类到正则表达式,那么Spring Framework中的StringUtils中有一个方法trimAllWhitespace(String)。


你已经从Gursel Koca得到了正确的答案,但我相信这不是你真正想做的事情。如何解析键值呢?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import java.util.Enumeration;
import java.util.Hashtable;

class SplitIt {
  public static void main(String args[])  {

    String person ="name=john age=13 year=2001";

    for (String p : person.split("\\s")) {
      String[] keyValue = p.split("=");
      System.out.println(keyValue[0] +" =" + keyValue[1]);
    }
  }
}

output:
name = john
age = 13
year = 2001


你应该用

1
s.replaceAll("\\s+","");

代替:

1
s.replaceAll("\\s","");

这样,它将在每个字符串之间使用多个空格。
上述正则表达式中的+符号表示"一个或多个"


最简单的方法是使用org.apache.commons.lang3.StringUtils类的commons-lang3库,例如"commons-lang3-3.1.jar"。

在输入字符串&上使用静态方法"StringUtils.deleteWhitespace(String str)"。从中删除所有空格后,它会返回一个字符串。我尝试了你的示例字符串"name=john age=13 year=2001"&它正好归还了你想要的字符串 -"name=johnage=13year=2001"。希望这可以帮助。


你可以这么简单地做到这一点

1
String newMysz = mysz.replace("","");

1
2
3
4
5
6
7
8
public static void main(String[] args) {        
    String s ="name=john age=13 year=2001";
    String t = s.replaceAll("","");
    System.out.println("s:" + s +", t:" + t);
}

Output:
s: name=john age=13 year=2001, t: name=johnage=13year=2001

1
2
3
4
String a="string with                multi spaces";
//or this
String b= a.replaceAll("\\s+","");
String c= a.replace("   ","").replace("  ","").replace(" ","").replace("  ","").replace(" ","");

//它适用于任何空格
*不要忘记刺痛的空间b


使用Pattern和Matcher它更具动态性。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RemovingSpace {

    /**
     * @param args
     * Removing Space Using Matcher
     */

    public static void main(String[] args) {
        String str="jld fdkjg jfdg";
        String pattern="[\\s]";
        String replace="";

        Pattern p= Pattern.compile(pattern);
        Matcher m=p.matcher(str);

        str=m.replaceAll(replace);
        System.out.println(str);    
    }
}


使用mysz.replaceAll("\\s+","");


在java中我们可以做以下操作:

1
2
3
4
5
6
7
String pattern="[\\s]";
String replace="";
part="name=john age=13 year=2001";
Pattern p=Pattern.compile(pattern);
Matcher m=p.matcher(part);
part=m.replaceAll(replace);
System.out.println(part);

为此,您需要将以下包导入您的程序:

1
2
import java.util.regex.Matcher;
import java.util.regex.Pattern;

我希望它会对你有所帮助。


\w表示"非单词字符"。空白字符的模式是\s。这在Pattern javadoc中有详细记载。


1
mysz = mysz.replace("","");

首先是空间,第二是没有空间。

然后就完成了。


1
2
3
4
5
6
7
8
9
10
11
12
13
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);
    }
}


使用apache string util类最好避免NullPointerException

1
org.apache.commons.lang3.StringUtils.replace("abc def","","")

产量

1
abcdef

要删除示例中的空格,这是另一种方法:

1
2
3
String mysz ="name=john age=13 year=2001";
String[] test = mysz.split("");
mysz = String.join("", mysz);

这样做是将它转换为一个数组,其中空格是分隔符,然后它将数组中的项组合在一起而没有空格。

它工作得很好,很容易理解。


还有其他空格字符串也存在于字符串中。所以我们可能需要从字符串中替换空格字符。

例如:无休息空间,三维空间,PUNCTUATION空间

这是空格char http://jkorpela.fi/chars/spaces.html的列表

所以我们需要修改

u2004我们为三个空间

s.replaceAll("[ u0020 u2004]",")


有很多方法可以解决这个问题。
你可以使用拆分功能或替换字符串的功能。

有关更多信息,请参阅smilliar问题http://techno-terminal.blogspot.in/2015/10/how-to-remove-spaces-from-given-string.html


您还可以查看以下Java代码。以下代码不使用任何"内置"方法。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
/**
 * 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));

    }
}

输入:

1
String inp ="01239Debashish123Pattn456aik";

输出:

1
The String is: 01239123456


1
2
3
4
5
6
7
8
9
10
11
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;
}

这可能有所帮助。


将每组文本分成自己的子字符串,然后连接这些子字符串:

1
2
3
4
5
6
7
8
9
10
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);  
    }
}

可以使用Character Class中的isWhitespace函数删除空格。

1
2
3
4
5
6
7
8
9
10
11
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);
}

在Kotlin中使用st.replaceAll("\\s+","")时,请确保使用Regex包装"\\s+"

1
"myString".replace(Regex("\\s+"),"")

您可以在不使用replaceAll()或Java中的任何预定义方法的情况下实现此目的。
这种方式是首选: -

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public class RemoveSpacesFromString {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        String newString;
        String str ="prashant is good" ;
        int i;
        char[] strArray = str.toCharArray();
        StringBuffer sb =  new StringBuffer();

        for(i = 0; i<strArray.length; i++)
        {
            if(strArray[i]!= ' ' && strArray[i]!= '\t')
            {
                sb.append(strArray[i]);
            }
        }
        System.out.println(sb);

        /*newString = str.replaceAll("" ,"");
        System.out.println(newString);*/

    }
}


你想要的代码是

1
str.replaceAll("\\s","");

这将删除所有空格。


试试这个:

1
2
3
4
5
6
7
String str="name=john age=13 year=2001";
String s[]=str.split("");
StringBuilder v=new StringBuilder();
for (String string : s) {
    v.append(string);
}
str=v.toString();