Java убрать все пробелы из строки

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

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

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

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

ОТВЕТЫ

Ответ 1

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

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

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

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

Ответ 2

\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

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

Ответ 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] + " post-104 post type-post status-publish format-standard has-post-thumbnail hentry category-uncategorized">

Ответ 9

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

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

Ответ 18

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

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

Ответ 21

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

Ответ 22

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

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

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

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

Ответ 23

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

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

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

Ответ 24

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

Ответ 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> 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] else < totint+=1; >> System.out.println(String.valueOf(out)); System.out.println(String.valueOf("Length: "+ out.length)); for (int c=0; 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] > 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",""); 

Источник

Удалить все пробелы, табуляцию, символы и т.д. из String Java?

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

FileInputStream inFile = new FileInputStream("c:\\bukovski.txt"); byte[] str = new byte [inFile.available()]; inFile.read(str); String text = new String(str); //String textWithoutspaces = new String(); //text = FilterText.filterWithSpaces(text); String textWithoutSpaces = text.toLowerCase().replaceAll("//s+", ""); System.out.println(textWithoutSpaces);

Для начала, такое выраение не убирает переходы на новую строку в некоторых случаях

replaceAll("[^а-я]+", "");
Возвращает ничего

EugeneP2

import java.io.*; public class CharCleaner < public static void main(String[] args) throws IOException < try ( Reader reader = new BufferedReader(new FileReader(new File("sourceFile.txt"))); Writer writer = new BufferedWriter(new FileWriter(new File("resultFile.txt"))) ) < int ch; while ((ch = reader.read()) != -1) < if (Character.isAlphabetic(ch)) < writer.write(ch); >> writer.flush(); > catch (IOException e) < e.printStackTrace(); >> >


Не грузит весь фал в память, при чтении и записи файла есть буферизация, в процессе работы не создает кучу String объектов методами replace*

Therapyx

Вот недавно писал для замены строк в текст фаиле с 001, 002, 003, 004. 500 хД чуток переделал, там где стринги таб, и ньюлайн, просто добавь еще твои варианты и вставь в лупе доп строку для этого стринга. Т.е. просто сделай все нужные варианты, которые нужны именно тебе. В данном же примере я сделал только пробелы и переходы на новую строку

import java.io.File; import java.io.FileReader; import java.io.IOException; import java.io.LineNumberReader; import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; public class Replace < public static void main(String[] args) throws IOException< LineNumberReader lnr = new LineNumberReader(new FileReader(new File("C:/test.txt"))); lnr.skip(Long.MAX_VALUE); System.out.println(lnr.getLineNumber() + 1 + " summary rows"); lnr.close(); Path path = Paths.get("C:/test.txt"); Charset charset = StandardCharsets.UTF_8; String content = new String(Files.readAllBytes(path), charset); String tab = " "; String newLine = "\n"; for (int i = 0; i < lnr.getLineNumber() + 2; i++) < content = content.replaceAll(tab, ""); content = content.replaceAll(newLine, ""); Files.write(path, content.getBytes(charset)); >> >

Источник

Как убрать пробелы в строке java

А если Вам необходимо убрать пробелы в начале и в конце, есть метод trim() который удаляет пробелы в начале и конце строки:

piblic static void main(String[] args)  String str = " Java- top "; System.out.println(str); System.out.println(str.trim()); > // Выход: // Java- top // Java- top // результат работы trim() 

Источник

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

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

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

как насчет, если строка на самом деле = "". Все, что делает trims () - очищает пустую строку, как я упоминал? @zyamat?

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

30 ответов

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

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

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

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

Я хотел бы отметить, что эти два регулярных выражения будут давать разные результаты, если вы хотите заменить все пробелы одним пробелом (или другим набором символов). Если у вас есть последовательные пробелы, с помощью \\ s он заменит каждый символ пробела указанными символами. Учитывая \\ s +, он заменит каждый набор пробелов одной строкой замены. Я вижу довольно много случаев, когда люди могут приходить на этот пост, чтобы заменить пробел чем-то, что не является пустой строкой, и это может быть полезно.

Просто используйте StringUtils из apache-commons. Это статический метод с именем StringUtils.deleteWhitespace.

@Gursel спасибо за ответ и сравнение производительности для двух регулярных выражений. Мне было интересно, почему есть разница в производительности между двумя? Есть ли что-то, чего мне не хватает, не могли бы вы указать мне какие-либо ссылки, которые больше говорят о разнице в производительности.

@GurselKoca уверен, что из-за моего любопытства вы использовали какой-либо инструмент или провели какое-то профилирование для сравнения производительности?

если вы хотите использовать этот метод в цикле, вы должны определить Pattern как конечную переменную Pattern.compile("\\s") потому что replaceAll перекомпилирует шаблон при каждом вызове, return Pattern.compile(regex).matcher(this).replaceAll(replacement); ,

Источник

Читайте также:  Convert html to email html
Оцените статью