首页 文章

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

提问于
浏览
597

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

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

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

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

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

29 回答

  • 4

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

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

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

  • 222

    replaceAll("\\s", "") 怎么样?请参阅here .

  • 7

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

    String withoutWhitespace = StringUtils.deleteWhitespace(whitespaces);
    

    你可以找到here . commons-lang包括更多,并得到很好的支持 .

  • 95

    \W 表示"non word character" . 空格字符的模式是 \s . 这在Pattern javadoc中有详细记载 .

  • 6

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


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

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


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

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

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

  • -2

    你已经从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]);
        }
      }
    }
    

    输出:name = john age = 13 year = 2001

  • 17

    您可以在不使用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);*/
        }
    }
    
  • 27

    将每组文本分隔为自己的子字符串,然后连接这些子字符串 . 恩 .

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

    使用apache string util类最好避免NullPointerException

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

    Output

    abcdef
    
  • 6

    你想要的代码是

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

    这将删除所有空白区域 .

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

    首先是空间,第二是空间 .

    然后就完成了 .

  • 2

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

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

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

    所以我们需要修改

    \ u2004我们为三个空间

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

  • 1

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

    使用静态方法“ StringUtils.deleteWhitespace(String str) " on your input string & it will return you a string after removing all the white spaces from it. I tried your example string " name=john age=13 year=2001 " & it returned me exactly the string that you wanted - " name=johnage=13year=2001 ” . 希望这可以帮助 .

  • 1

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

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

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

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

  • 3

    你可以这么简单地做到

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

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

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

    我刚从其他答案中修改了这段代码 . 我发布它是因为除了正是所要求的问题之外,它还表明 the result is returned as a new string, the original string is not modified 作为一些暗示的答案 .

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

  • 27

    试试这个

    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();
    
  • 25

    在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

    使用Pattern和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);    
        }
    }
    
  • 1

    你应该用

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

    代替:

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

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

  • 2

    可以使用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);
    }
    
  • 0
    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;
        }
    

    这可能有所帮助 .

  • 3

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

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

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

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

  • -4
    replaceAll("\\s","")
    

    \w =任何单词字符

    \W =任何不是单词字符的东西(包括标点符号等)

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

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

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

  • -1
    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);
        }
    }
    
  • 0
    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
    

相关问题