2015-03-03 3 views
1

Я следующий кодRegEx удалить скобки и пробелы

String[] helloWorld = {"Hello", "World"}; 
System.out.println(Arrays.toString(helloWorld)); 

, который печатает

[Hello, World] 

Мне нужно удалить пробелы и []. И получите следующее значение.

Hello,World 

Я это helloWorld.replaceAll("\\s+","") для удаления пустых пространств, но как я могу удалить скобки, а также.

+1

Почему вы не просто изменить 'Println()'? –

+2

[Что такое проблема XY?] (Http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem) – Phylogenesis

ответ

2

Измените регулярное выражение:

String[] helloWorld = {"Hello", "World"}; 
System.out.println(Arrays.toString(helloWorld).replaceAll("[\\[\\]\\s]", "")); 

Так как [ и ] являются специальными символами в Regex, они должны быть экранированы.

10

Там нет необходимости в регулярном выражении здесь, тем более, что вы можете легко сделать много ошибок, как удаление [], которые являются частью ваших жетонов, или если элементы могут содержать более одного слова, как [foo bar, baz].

Простейший способ решения этой проблемы заключается в использовании String.join(CharSequence delimiter, CharSequence... elements) добавлен в Java 8.

String[] helloWorld = {"Hello", "World"}; 
System.out.println(String.join(",", helloWorld)); 

Если у вас нет Java 8 Вы можете написать свой собственный метод, как

public static String join(CharSequence delimiter, CharSequence... elements){ 
    if (elements.length == 0) return ""; 
    StringBuilder sb = new StringBuilder(elements[0]); 
    for (int i = 1; i < elements.length; i++) { 
     sb.append(delimiter).append(elements[i]); 
    } 
    return sb.toString(); 
} 

Если вы не можете использовать Java 8, и вы не хотите изобретать колесо, вы можете использовать внешний метод, например StringUtils.join из http://commons.apache.org/proper/commons-lang/ библиотека

System.out.println(StringUtils.join(helloWorld, ",")); 
+0

Спасибо Pshemo, но в проекте, в котором я работаю, нет Java 8, поэтому regEx - единственное решение. – kumareloaded

+0

@kumareloaded Я добавил несколько альтернатив в свой ответ. – Pshemo

Смежные вопросы