2012-06-15 6 views
2

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

В принципе, у меня есть веб-страницу, которая динамически обновляет пользователей, присутствующих в строку, стилизованный как таковой

User1, User2, Пользователь3 Пользователь4

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

Начиная

, Пользователь2, Пользователь3 Пользователь4

Средний

User1,, Пользователь3 Пользователь4

Конец

User1, User2, Пользователь3

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

Спасибо, кучка.

+0

Этот вопрос не достаточно ясно. Где эти строки? вы делаете это на сервере или в jsp? это возможно, возможно, с заменой() или лучше replaceFirst(), но без каких-либо дополнительных деталей я не могу помочь вам – Th0rndike

+0

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

+0

Строки находятся в jsp и регенерируются каждый раз, когда страница загружается – xdefaultx

ответ

6

Вы могли бы соответствовать ,$, ^, и , , с регулярным выражением и заменить его на пустой

+0

Я предполагаю, что вы хотели написать '^,' и ', $' –

+1

Очевидно, что OP не единственный с мозговой картой;) исправлено. И спасибо! – Miquel

+0

Мы говорим о регулярном выражении display.replaceAll (", $ | ^, |,,", ""); Прошу прощения, так как я написал что-то подобное, поэтому я довольно ржавый – xdefaultx

1

Вы можете просто попробовать:

String s = "User1, , User2, User3, ,...; 
s = s.replaceAll(", ,", ","); 
+0

Я бы, наверное, учли, что могут быть дополнительные пробелы. Потому что ты знаешь, что это произойдет. –

+0

Вам понадобится еще несколько заявлений для окончательной и начальной запятой – Miquel

1

Я бы раскол, а затем присоединиться.

С Guava:

final Iterable<String> fields = Splitter.on(",") 
    .trimResults() 
    .omitEmptyStrings() 
    .split(data); 

final String trimmedData = Joiner.on(",").join(fields); 

При этом вы можете даже проверить входные поля с Iterables.filter, если вы хотите.

1
",User1, , User3, User4,".replaceAll("[\\s],|,$|^,", ""); 

->

User1, User3, User4