Замена регулярных выражений Java

#java #regex

#java #регулярное выражение

Вопрос:

У меня есть строка csv, подобная

 "abc, java, stackoverflow  ,     stack exchange   , test"
  

Могу ли я использовать regex для удаления пробела вокруг запятых, чтобы получить строку типа

 "abc,java,stackoverflow,stack exchange,test"
  

Комментарии:

1. Как насчет a , "b , b" , c ?

2. К сожалению, «b , b» будет обрабатываться как два разных значения, но меня это устраивает 🙂

3. хорошо, тогда подойдет решение Криса.

Ответ №1:

 str = str.replaceAll("\s*,\s*", ",");
  

Комментарии:

1. @Rnet: s (который должен быть записан как \s в строковом литерале Java) соответствует одному символу пробела. * соответствует нулю или более «вещи» перед ним. Итак, s* означает ноль или более пробельных символов. С остальным вы можете разобраться. 😉

2. @Chris Jester-Young: Спасибо 🙂

3. 1 Черт. Я думал, почему replace() не работает. Теперь я вижу из документов, что replaceAll() поддерживает регулярные выражения. Спасибо!

4. @asgs: если бы вы использовали replace() для замены пробела, это также заменило бы пробел между значениями.

5. @Rnet на самом деле, я использовал то же самое регулярное выражение внутри replace() .