java - 给定一个句子,单词之间有多个空格。删除多余的空格,使句子中的单词之间只有一个空格

标签 java string whitespace space

<分区>

问题很明确。代码应使用 Java 且不使用正则表达式(如果有人没有注意到,这不是重复的,我正在寻求一种不使用正则表达式的方法)。

input: This is  a string     with more than   one space between words.

output: This is a string with more than one space between words.

有比这样做更好的方法吗?

public static String delSpaces(String str){
    StringBuilder sb = new StringBuilder(str);
    ArrayList<Integer> spaceIndexes = new ArrayList<>();

    for ( int i=0; i < sb.length(); i++ ){
        if ( sb.charAt(i) == ' ' && sb.charAt(i-1) == ' '){
            spaceIndexes.add(i);
        }
    }

    for (int i = 0; i < spaceIndexes.size(); i++){
        sb.deleteCharAt(spaceIndexes.get(i)-i);
    }
    return new String(sb.toString());
}

最佳答案

使用 str.replaceAll("\\s+","");//使用正则表达式的最简单方法

第二种方式:

public static String delSpaces(String str){    //custom method to remove multiple space
        StringBuilder sb=new StringBuilder();
        for(String s: str.split(" ")){

            if(!s.equals(""))        // ignore space
             sb.append(s+" ");       // add word with 1 space

        }
        return new String(sb.toString());
    }

第三种方式:

public static String delSpaces(String str){
        int space=0;
        StringBuilder sb=new StringBuilder();
        for(int i=0;i<str.length();i++){
            if(str.charAt(i)!=' '){
                sb.append(str.charAt(i));  // add character
                space=0;
            }else{
                space++;
                if(space==1){       // add 1st space
                    sb.append(" ");
                }
            }
        }
        return new String(sb.toString());
    }

关于java - 给定一个句子,单词之间有多个空格。删除多余的空格,使句子中的单词之间只有一个空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26565705/

相关文章:

html - 在 css 行之间包含不同的间距

python - 使用空格拆分 python 列表的第一项

css - 网页水平滚动,右侧只有空格

java - 使用 Java,您使用私有(private)方法吗?你使用静态方法吗?

C-Compiler 在将字符串分配给 char 数组时说 "Cannot convert char * to char"

python - 在拆分字符串列表中查找字符串

sql - PostgreSQL 和 PHP。从查询中获取会增加 char 字符串的空间

java - 两个 vector/点之间的角度

递归方法中的 java.lang.StackOverflowError

java - 原始堆栈与通用堆栈<字符>