2013-12-16 6 views
-2
String ="(Buy) 655500 - (Sell) 656500"; 

Я хочу разбить эту строку, игнорируя (Buy), -, (Sell).Как разбить сложную строку?

Конечный результат, который я хочу, такой вот 655500 656500.

Выше example..Actually моя строка содержит UTF-8 characters..But Я оставил его здесь

+0

Не могли бы вы сообщить нам, что вы пробовали до сих пор, чтобы решить эту проблему? – MansoorShaikh

+0

Если ваш синтаксис всегда такой, вы можете просто разделить на пробелы и всегда знать индексы массива чисел ... – Ben

+0

если ответ проработал, пожалуйста, дайте согласие на ответ :) –

ответ

4

Regular Expression

String src = "(Buy) 655500 - (Sell) 656500"; 
    String reg = "[0-9]+"; 
    Pattern pattern = Pattern.compile(reg); 
    Matcher matcher = pattern.matcher(src); 
    while(matcher.find()) { 
     System.out.println(matcher.group()); 
    } 
+0

Я думаю, что это лучше всего совместимо с моим кодом .. Используя регулярное выражение, это лучшее для состояния символа UTF8. Спасибо Longwayto – lynndragon

0

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

Using Regular Expressions to Extract a Value in Java

1
String string = "(Buy) 655500 - (Sell) 656500"; 

String needed = string.replaceAll("[\"(Buy)(Sell)-]", ""); 

это должно работать, может быть ... нужно, это строка, которая должна дать вам нужный результат.

0

Если синтаксис всегда нравится, что вы можете просто разделить так:

String string = "(Buy) 655500 - (Sell) 656500"; 
String replaced= string.replaceAll("[(Buy)(Sell)]", ""); 
String[] values = replaced.split("-"); 

здесь: значение [0] будет 655500 и значения [1] будет 656500

Если ваше требование иное, то комментарий.

0

другой способ:

String baseStr = "(Buy) 655500 - (Sell) 656500"; 
String buy = baseStr.split("-")[0].replaceAll("\\D+", ""); 
String sell = baseStr.split("-")[1].replaceAll("\\D+", ""); 

System.out.println("Base String: " + baseStr); 
System.out.println("Buy String : " + buy); 
System.out.println("Sell String: " + sell); 

и вот результат:

Base String: (Buy) 655500 - (Sell) 656500 
Buy String : 655500 
Sell String: 656500 
0

Попробуйте это:

String text = "(Buy) 655500 - (Sell) 656500"; 
    List<String> parts = new LinkedList<String>(Arrays.asList(text.split("\\D"))); 
    parts.removeAll(Arrays.asList("")); 
    System.out.println(parts); 

Fnd вы получите список номеров в строке.

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