2015-11-13 2 views
3

У меня есть строка:Java replaceALL для строки

100-200-300-400 

я хочу заменить тире на «» и добавить одиночные кавычки, так что стало:

'100','200','300','400' 

Мой текущий код только в состоянии заменить "-" to ",", Как я могу добавить одну цитату?

String str1 = "100-200-300-400";  
split = str1 .replaceAll("-", ","); 

if (split.endsWith(",")) 
{ 
    split = split.substring(0, split.length()-1); 
} 

ответ

4

Вы можете использовать

split = str1 .replaceAll("-", "','"); 
split = "'" + split + "'"; 
+0

. который будет приводить только целую строку в одну одинарную цитату, «100,200,300,40 0 ' – hades

+0

@ user3172596 Я протестировал его и получил «100», «200», «300», «400». Вызов «replaceAll» добавляет оставшиеся одинарные кавычки. Обратите внимание, что это не тот же «replaceAll», как в вашем вопросе. – Eran

+0

ах .... извините, воздержитесь, спасибо в любом случае. – hades

1

В качестве альтернативы, если вы используете Java 1.8, то вы можете создать StringJoiner и разделить строку на -. Это будет немного менее эффективным, но было бы более безопасным, если вы возьмете, например, вотумение -.

Небольшой образец может выглядеть так.

String string = "100-200-300-400-"; 
String[] splittet = string.split("-"); 
StringJoiner joiner = new StringJoiner("','", "'", "'"); 
for(String s : splittet) { 
    joiner.add(s); 
} 
System.out.println(joiner); 
+0

Есть ли в наличии решение для java 1.6? не используя java 1.8 – hades

+0

@ user3172596 он не включен внутри 1.6 jdk к сожалению. В противном случае вам нужно будет искать регулярное выражение. Решение, предлагаемое Эраном, должно работать. – SomeJavaGuy

0

Это будет работать для вас:

public static void main(String[] args) throws Exception { 
    String s = "100-200-300-400"; 
    System.out.println(s.replaceAll("(\\d+)(-|$)", "'$1',").replaceAll(",$", "")); 
} 

O/P:

'100','200','300','400' 

Или (если вы не хотите использовать replaceAll() дважды

public static void main(String[] args) throws Exception { 
    String s = "100-200-300-400"; 
    s = s.replaceAll("(\\d+)(-|$)", "'$1',"); 
    System.out.println(s.substring(0, s.length()-1)); 
} 
+0

- это регулярное выражение ur, ограниченное только целым числом? мое значение может быть: *** - 100-TSK-534 – hades

+0

@ user3172596 - Вы можете заменить '\\ d +' на '[a-zA-Z] +', если у вас есть значения, такие как 'abc-asa' и т. д. – TheLostMind