Java, как заменить 2 или более пробелов одним пробелом в строке и удалить начальные и конечные пробелы - PullRequest
237 голосов
/ 29 мая 2010

Ищете быстрый и простой способ изменить эту строку на Java

" hello     there   "

к чему-то похожему

"hello there"

, где я заменяю все эти несколько пробелов одним пробелом, за исключением того, что я также хочу, чтобы пропали один или несколько пробелов в начале строки.

Нечто подобное заставляет меня там отчасти

String mytext = " hello     there   ";
mytext = mytext.replaceAll("( )+", " ");

но не совсем.

Ответы [ 22 ]

0 голосов
/ 09 июня 2019

Я знаю, что метод replaceAll намного проще, но я тоже хотел опубликовать это.

public static String removeExtraSpace(String input) {
    input= input.trim();
    ArrayList <String> x= new ArrayList<>(Arrays.asList(input.split("")));
    for(int i=0; i<x.size()-1;i++) {
        if(x.get(i).equals(" ") && x.get(i+1).equals(" ")) { 
            x.remove(i); 
            i--; 
        }
    }
    String word="";
    for(String each: x) 
        word+=each;
    return word;
}
0 голосов
/ 28 октября 2015

проверить это ...

public static void main(String[] args) {
    String s = "A B  C   D    E F      G\tH I\rJ\nK\tL";
    System.out.println("Current      : "+s);
    System.out.println("Single Space : "+singleSpace(s));
    System.out.println("Space  count : "+spaceCount(s));
    System.out.format("Replace  all = %s", s.replaceAll("\\s+", ""));

    // Example where it uses the most.
    String s = "My name is yashwanth . M";
    String s2 = "My nameis yashwanth.M";

    System.out.println("Normal  : "+s.equals(s2));
    System.out.println("Replace : "+s.replaceAll("\\s+", "").equals(s2.replaceAll("\\s+", "")));

} 

Если строка содержит только один пробел, то replace () не будет заменять,

Если пробелов больше, чем один, выполняется действие replace () и удаляется повторная попытка.

public static String singleSpace(String str){
    return str.replaceAll("  +|   +|\t|\r|\n","");
}

Для подсчета количества пробелов в строке.

public static String spaceCount(String str){
    int i = 0;
    while(str.indexOf(" ") > -1){
      //str = str.replaceFirst(" ", ""+(i++));
        str = str.replaceFirst(Pattern.quote(" "), ""+(i++)); 
    }
    return str;
}

Pattern .quote ("?") Возвращает буквенный шаблон String.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...