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

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

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

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

如何使用以下方法实现字符串:

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

#1楼

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


#2楼

在Java中,我们可以执行以下操作:

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);

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

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

希望对您有帮助。


#3楼

该问题的最正确答案是:

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

我只是从其他答案中改编了这段代码。 我发布它的原因是,除了确切地是问题所要求的内容之外,它还表明结果以新字符串的形式返回,原始字符串并未像某些答案所暗示的那样被修改

(经验丰富的Java开发人员可能会说“当然,您实际上不能修改String”,但是此问题的目标读者可能不知道这一点。)


#4楼

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

首先有空间,其次没有空间。

然后就完成了。


#5楼

你应该用

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

代替:

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

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


#6楼

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

#7楼

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

String withoutWhitespace = StringUtils.deleteWhitespace(whitespaces);

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


#8楼

如果您还需要删除牢不可破的空间,则可以这样升级代码:

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

#9楼

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

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


#10楼

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);
    }
}

#11楼

您可以这样简单地通过

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

#12楼

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

//任何空格都可以正常工作*不要忘记字符串b中的空格


#13楼

使用Pattern And Matcher,它更加动态。

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);    
    }
}

#14楼

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

在输入字符串上使用静态方法“ StringUtils.deleteWhitespace(String str) ”,从其中删除所有空格后,它将返回一个字符串。 我尝试了您的示例字符串“ name=john age=13 year=2001 ”,它精确地返回了您想要的字符串-“ name=johnage=13year=2001 ”。 希望这可以帮助。


#15楼

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


#16楼

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

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);*/
    }
}

#17楼

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

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

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

它工作得很好并且易于理解。


#18楼

使用apache字符串util类最好避免NullPointerException

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

输出量

abcdef

#19楼

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;
}

这可能会有所帮助。


#20楼

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

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);  
    }
}

#21楼

可以使用Character Class中的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);
}

#22楼

字符串中也存在其他空格字符。因此,我们可能需要从字符串中替换空格字符。

例:无间断空间,3个电磁区,标点空间

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

所以我们需要修改

\\ u2004我们用于三个PER-EM空间

s.replaceAll(“ [\\ u0020 \\ u2004]”,“”)


#23楼

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

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

#24楼

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


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

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


将值分配给变量(如果不直接使用):

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

#25楼

您已经从古塞尔·科卡(Gursel Koca)得到了正确的答案,但是我相信这很有可能不是您真正想做的。 如何解析键值呢?

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]);
    }
  }
}

输出:
名字=约翰
年龄= 13
年= 2001


#26楼

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


#27楼

replaceAll("\\s","")

\\w =任何文字字符

\\W =任何非文字字符(包括标点符号等)

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

\\S =任何非空格字符(包括字母和数字,以及标点符号等)

(编辑:如前所述,如果希望\\s到达正则表达式引擎,则需要转义反斜杠,从而导致\\\\s 。)


#28楼

\\W表示“非文字字符”。 空格字符的模式为\\s 。 这在Pattern javadoc中有详细记录


#29楼

您还可以查看下面的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

#30楼

private String generateAttachName(String fileName, String searchOn, String char1) {
    return fileName.replaceAll(searchOn, char1);
}


String fileName= generateAttachName("Hello My Mom","\\s","");

#31楼

如果要从字符串中删除所有空格:

public String removeSpace(String str) {
    String result = "";
    for (int i = 0; i < str.length(); i++){
        char c = str.charAt(i);        
        if(c!=' ') {
            result += c;
        }
    }
    return result;
}
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值