2015-07-05 7 views
0

Мне нужно извлечь цифры в заданной строке и сохранить их в отдельном массиве, чтобы каждый индекс хранил в строке отдельный номер. Ex- «15 лисиц преследуют 12 кроликов». Мне нужно, чтобы числа 15 и 12 сохранялись в [0] и [1].Извлечение цифр из строки

String question=jTextArea1.getText(); 
String lower=question.toLowerCase(); 
check(lower); 

public void check(String low) 
    { 
int j; 
String[] ins={"into","add","Insert"}; 
String cc=low; 

for(int i=0;i<2;i++) 
    {  
String dd=ins[i]; 
if(cc.contains(dd)) 
    { 
     j=1; 
     insert(cc); 
     break; 
    } 
    }} 

public void insert(String low) 
{ 
String character = low; 
int l=low.length(); 
int j[]=new int[20]; 
int m=0; 

for(int k=0;k<=2;k++) 
{ 
    j[k]=0; 
    for(int i=0;i<l;i++) 
    { 
    char c = character.charAt(i); 
    if (Character.isDigit(c)) 
    { 

     String str=Character.toString(c); 
     j[k]=(j[k]*10)+Integer.parseInt(str); 
     m++; 
    } 
    else if (Character.isLetter(c)) 
    { 
    if(m>2) 
    { 
    break; 
} 
}}} 
+1

Чистые запросы кода письма являются вне темы на переполнение стека - мы ожидаем, что вопросы здесь, чтобы относиться к * * специфические проблемы программирования - но мы с удовольствием поможет вы сами пишете! Сообщите нам [что вы пробовали] (http://whathaveyoutried.com), и где вы застряли. Это также поможет нам лучше ответить на ваш вопрос. –

+0

@TDG Я использовал цикл символов, в котором я проверяю каждый символ, является ли он строкой или цифрой, а затем сохраняет его в массиве, но он слишком длинный, а конечный вывод хранится в том же индексе. –

+0

@RakeshA Покажите, что вы пробовали с кодом в своем вопросе – UnknownOctopus

ответ

1

Regex - лучший вариант для вас.

//Compilation of the regex 
    Pattern p = Pattern.compile("(\d*)"); 
    // Creation of the search engine 
    Matcher m = p.matcher("15 foxes chases 12 rabbits"); 
    // Lunching the searching 
    boolean b = m.matches(); 
    // if any number was found then 
    if(b) { 
     // for each found number 
     for(int i=1; i <= m.groupCount(); i++) { 
      // Print out the found numbers; 
    // if you want you can store these number in another array 
//since m.group is the one which has the found number(s) 
      System.out.println("Number " + i + " : " + m.group(i)); 
     } 
} 

Необходимо импортировать java.util.regex. *;

+0

Во-первых, это 'Pattern.compile (" (\\ d *) ")'. Это будет соответствовать только одному из чисел, как получить другие цифры в строке? – shanmuga

+0

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

0

Предполагая, что вы не можете использовать Collection как List, я хотел бы начать с расщеплением на белом пространстве, используя метод для подсчета числа в массиве (с Pattern на цифры), а затем построить выходной массив. Что-то вроде

public static int getNumberCount(String[] arr) { 
    int count = 0; 
    for (String str : arr) { 
     if (str.matches("\\d+")) { 
      count++; 
     } 
    } 
    return count; 
} 

, а затем использовать его как

public static void main(String[] args) { 
    String example = "15 foxes chases 12 rabbits"; 
    String[] arr = example.split("\\s+"); 
    int count = getNumberCount(arr); 
    int[] a = new int[count]; 
    int pos = 0; 
    for (String str : arr) { 
     if (str.matches("\\d+")) { 
      a[pos++] = Integer.parseInt(str); 
     } 
    } 
    System.out.println(Arrays.toString(a)); 
} 

Выход есть (по запросу)

[15, 12] 
+0

Спасибо. Это лучше. –

0

Для извлечения цифр из строк можно использовать следующий код:

String text = "12 18 100"; 
    String[] n = text.split(" "); 
    int[] num = n.length; 
    for (int i =0; i < num.length;i++) { 
    num[i] = Integer.parseInt(n[i]); 
    }; 

Все номера строк в текст будет целым числом

0

Я believie он должен быть

String str = "12 aa 15 155"; 

    Scanner scanner = new Scanner(str); 
    while(scanner.hasNext()) 
    { 
     if(scanner.hasNextInt()) 
     { 
      int next = scanner.nextInt(); 
      System.out.println(next); 
     } 
     else 
     { 
      scanner.next(); 
     } 
    } 
    scanner.close(); 
Смежные вопросы