Подтвердить что ты не робот

Удаление пробелов из строк в Java

У меня есть строка вроде этого:

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

Я хочу удалить пробелы в строке. Я попробовал trim(), но это удаляет только пробелы до и после всей строки. Я также пробовал replaceAll("\\W", ""), но затем удаляется =.

Как я могу получить строку с помощью:

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

Ответ 1

st.replaceAll("\\s+","") удаляет все пробелы и невидимые символы (например, tab, \n).


st.replaceAll("\\s+","") и st.replaceAll("\\s","") дают тот же результат.

Второе регулярное выражение на 20% быстрее, чем первое, но по мере увеличения числа последовательных пробелов первое работает лучше второго.


Назначьте значение переменной, если она не используется напрямую:

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

Ответ 2

replaceAll("\\s","")

\w= Все, что является символом слова

\w= Все, что не является символом слова (включая пунктуацию и т.д.)

\s= Все, что является символом пробела (включая пробел, символы табуляции и т.д.)

\s= Все, что не является символом пробела (включая буквы и цифры, а также пунктуацию и т.д.)

(Edit: Как указано, вам нужно избежать обратного слэша, если вы хотите, чтобы \s достигли механизма регулярных выражений, в результате получилось \\s.)

Ответ 3

Самый правильный ответ на вопрос:

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

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

(Опытные разработчики Java могут сказать: "Конечно, вы не можете на самом деле модифицировать строку", но целевая аудитория для этого вопроса может не знать этого.)

Ответ 4

Как насчет replaceAll("\\s", ""). Обратитесь здесь.

Ответ 5

Один из способов обработки строковых манипуляций - это StringUtils из общедоступных Apache.

String withoutWhitespace = StringUtils.deleteWhitespace(whitespaces);

Здесь вы можете найти . commons-lang включает в себя много больше и хорошо поддерживается.

Ответ 6

Если вам нужно также удалить нерушимые пространства, вы можете обновить свой код следующим образом:

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

Ответ 7

Если вы предпочитаете классы утилиты для регулярных выражений, существует метод trimAllWhitespace (String) в StringUtils в Spring Framework.

Ответ 8

У вас уже есть правильный ответ от 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
возраст = 13
год = 2001

Ответ 9

Вы должны использовать

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

вместо:

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

Таким образом, он будет работать с несколькими пространствами между каждой строкой. Знак + в указанном выше выражении означает "один или несколько \s"

Ответ 10

Самый простой способ сделать это - использовать 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". Надеюсь, это поможет.

Ответ 11

Вы можете сделать это просто

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

Ответ 12

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

Ответ 13

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

//он отлично работает с любыми пробелами * не забывайте пробел в sting b

Ответ 14

\W означает "символ без слова". Шаблон для пробельных символов \s. Это хорошо описано в Pattern javadoc.

Ответ 15

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

Надеюсь, это поможет вам.

Ответ 16

Использование 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);    
    }
}

Ответ 17

Используйте mysz.replaceAll("\\s+","");

Ответ 18

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

Сначала пробел, второй без пробела.

Тогда это будет сделано.

Ответ 19

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

Ответ 20

Использовать класс apache string util лучше избегать NullPointerException

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

Выход

abcdef

Ответ 21

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

для получения дополнительной информации обратитесь к проблеме smilliar http://techno-terminal.blogspot.in/2015/10/how-to-remove-spaces-from-given-string.html

Ответ 22

Чтобы удалить пробелы в вашем примере, это еще один способ сделать это:

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

Что это значит, он преобразует его в массив с пробелами, являющимися разделителями, а затем объединяет элементы в массиве без пробелов.

Это работает очень хорошо и легко понять.

Ответ 23

Есть еще пробел, который тоже существует в строках. Так что пробел, который нам может понадобиться заменить из строк.

Пример: НОРМАЛЬНОЕ ПРОСТРАНСТВО, ПРОСТРАНСТВО ТРЕХ-ЭФЕР, ПРОСТРАНСТВО

Вот список космического символа http://jkorpela.fi/chars/spaces.html

Поэтому нам нужно изменить

\\\\\\\\\\\\

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

Ответ 24

При использовании st.replaceAll("\\s+","") в Kotlin убедитесь, что вы "\\s+" с помощью Regex:

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

Ответ 25

var str ="hello    the dog is big"
var expression = /\s+/g;
var x =str.replace(expression, "");

return x;

Это работает для меня и находит белые пробелы, а не просто пространства определенного размера.

Ответ 26

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

Это может помочь.

Ответ 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);  
    }
}

Ответ 28

Белое пространство можно удалить с помощью функции 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);
}

Ответ 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","");