2012-02-03 3 views
-12

Возможные Дублировать:
Cutting/splitting strings with JavaРазбиение строки с Java

У меня есть строка, например:

C:  16896208896 

Как я могу получить следующий вывод:

16896208896 
+2

Что вы пробовали? Вы посмотрели на javadocs String? Было ли stackoverflow первым, что вы пробовали? –

+2

http://www.googleguide.com – Matten

+9

'System.out.println (« 16896208896 »);' –

ответ

3

Java docs on String.split()

String[] expl = rawString.split(":"); 
System.out.print(expl[1].trim()); 
+0

+1: Я бы использовал Java 7 Javadoc и String, которая игнорирует пробел вместо char ' : \\ s + "' –

+1

@ usoban. Вы действительно должны привыкнуть связывать самые последние javadoc. – mre

+0

Исправлена ​​ссылка. – usoban

0

substring(10)

Чтобы дать более полный ответ, нам нужно было бы больше информации об изменчивости строки.

+0

Этот подход нецелесообразен, поскольку «подстрока» строки имеет тот же размер, что и исходная строка. проверьте поле строки 'значение'. проверьте мои ответы на общий подход – MozenRath

+0

Ваш ответ может использовать меньше памяти, но определенно менее эффективен с точки зрения времени обработки, а также менее прямой. Предположим, что если точное начальное положение номера неизвестно, потребуется раскол. –

+0

Да, я понял. Вот почему я сказал, что это общий подход. использование подстроки - это своего рода хард-код здесь – MozenRath

0

Самый простой способ, при условии, всегда есть десять символов перед номером начинается бы

System.out.println(theString.substring(10)); 

Если количество символов меняется, то что-то вроде

System.out.println(theString.split(" ")[1]); 

будет работать.

+0

'System.out.println (theString.split (" ") [1]);' будет возвращать пустое пространство. Если количество символов меняется, мы не можем использовать что-то вроде 'System.out.println (theString.split (": ") [1] .trim());' ..? – Mudassir

0

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

"C:  16896208896 ".replaceAll("^\\D*(\\d+)\\D*$", "$1"); 
0
Pattern pattern = Pattern.compile("\s*(\d+)"); 
Matcher matcher = pattern.matcher(myString); 
matcher.find(); 
String result = matcher.group(1); 

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

1

попробуйте это.

yourString.split("\\s+")[1]; 
+1

На самом деле это 'yourString.split (" \\ s + ") [1];'. – Mudassir

3
String str = "C:  16896208896" 
str.split("  ")[1]; 

или

String str = "C:  16896208896" 
str.substring(10); 

или использовать регулярное выражение, чтобы отфильтровать то, что вы хотите.

0

Самое простое решение зависит от строковой структуры: всегда ли это в вашем примере? Затем вы можете просто взять подстроку, начиная с позиции 2, и обрезать ее (s.substring (2) .trim()).

В качестве альтернативы, если часть перед «:» изменяется, разделите строку на «:», используя split (см. http://www.java-examples.com/java-string-split-example).

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

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