2014-02-20 3 views
-1

Привет все Я надеюсь, зачищать строку в Java в строку и целое число, например:Java разделения строки и целого

"String1" 

в:

String StringName = "String"; 
int StringInt = 1; 

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

+3

любой логики от вашего боковая сторона ? – exexzian

+1

В этом случае regex woud be nice :) –

+1

Я случайно отправил ответ, не видя ваших усилий. :) У вас есть что-нибудь в уме, как решение? Вы должны показать это ... –

ответ

-1

Я бы предложил использовать регулярное выражение.

String value = "string12asd"; 
String intValue = value.replaceAll("[^0-9]", ""); 
String stringValue = value.replaceAll("[0-9]",""); 
System.out.println("int are: "+intValue+" \n string are: "+stringValue); 

Посмотрите на http://www.regular-expressions.info/tutorial.html, чтобы узнать подробнее о регулярном выражении.

+0

Для этого вопроса я думаю, что regex немного переборщил. – Michael

+0

Почему? он не упомянул, где будет целое число или строка – Ashish

+0

Почему это имеет значение, откуда берутся целое число и строка? Регулярное выражение должно будет проходить через всю строку, тогда как более прямой подход должен будет только перебирать число в конце. – Michael

1

Если номер всегда находится в конце строки, напишите метод, который повторяется через строку, начинающуюся с конца, до тех пор, пока вы не нажмете нецелочисленный символ, а затем возьмите подстроку, используя индекс, который вы только что нашли. Вероятно, это будет скорее, чем регулярное выражение, в большинстве случаев, поскольку итерация через конец строки будет O(n) (где n=[num_integers]) + O(1) для метода substring.

2

Вы можете сделать это с регулярным выражением: (.*?)(\\d+)$ Позвольте мне объяснить это, начиная с конца. $ соответствует концу строки (я не рассматриваю многострочные строки здесь). \d (в java-коде необходимо экранировать как \\d) соответствует любой цифре, поэтому последняя группа захвата совпадает с целым числом в конце строки. Первая группа сопоставляет все символы перед этим. Нежелательная оценка *? требуется в первой группе, иначе она будет соответствовать всей строке.

В целом рабочий пример:

Matcher m = Pattern.compile("(.*?)(\\d+)$").matcher(yourString); 
if (m.matches()) { 
    String stringPart = m.group(1); 
    int intPart = Integer.parseInt(m.group(2)); 
} 
+0

Почему downvote? – SebastianH

+0

Честно говоря, я не уверен. Мой пост получил downvoted, как только я не согласился с Ashish в комментариях его сообщения, и примерно через минуту после того, как кто-то остановил свой пост, остальные получили -1. – Michael

1
String stringName[<maximum length>] 
int stringInt; 
for(int i = 0; i < originalString.length(); i++){ 
    if(isDigit(originalString[i]){ 
     stringInt = originalString[i]; 
    } 
    else{ 
     stringName[i] = originalString[i]; 
    } 
} 

Это должно переместить все символы из исходной строки в stringName если целое значение не приходит, которое будет сохранять в stringInt

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