2014-10-16 76 views
1

我的文件(rates.txt)包含:Abc defghijk lmn opqr st uvwxyza bc 19在Java从文件中提取数值

我只想提取该文件的19并将其存储为一个整数。

我该如何解决这个问题?

我试过使用子字符串,但我不确定要使用哪种方法才能使其仅选择数值。

谢谢

+3

向我们显示您的代码。 – m0skit0 2014-10-16 19:33:01

+0

你的答案也将取决于你的数据的一致性。数字数据总是会在最后?总是会有一个数字标记,而其他所有标记都是alpha?询问头脑想知道。 – MarsAtomic 2014-10-16 19:36:46

+0

这只是一个单一的数据,我想要做的就是导入数据并取出数字19,然后我可以在程序中使用它。 – ChatNoir 2014-10-16 19:41:47

回答

4

如果使用正则表达式会怎么样。 试试这个(我假设你只有一个整数值):

import java.util.regex.Matcher; 
import java.util.regex.Pattern; 
public class Tester { 


public static void main(String[] args) { 
    Pattern pattern = Pattern.compile("\\D*(\\d+)\\D*"); 
    Matcher matcher = pattern.matcher("Abc defghijk lmn opqr st uvwxyza bc 19"); 

    try { 
     if (matcher.find()) { 
      String stringDigit = matcher.group(1); 
      int number = Integer.parseInt(stringDigit); 
      System.out.println(number); 

     } 
    } catch(Exception e) { 

    } 
    } 

} 

模式 “\ d *(\ d +)\ d *”,其实就是:

\ d *:多个非数字字符(包括零量字符)

\ d +:多个数字字符

所以,我们正在寻找由一些非数字字符括起来的一些数字字符。

Pattern.compile("\\D*(\\d+)\\D*"); 
1
import java.util.regex.Matcher; 
import java.util.regex.Pattern; 
public class Main { 
    public static void main(String[] args) { 
     String text = "xAbc defghijk lmn opqr st uvwxyza bc 19"; 
     Pattern pattern = Pattern.compile("([0-9]+)"); 
     Matcher matcher = pattern.matcher(text); 
     if(matcher.find()) { 
      int number = Integer.valueOf(matcher.group(1)); 
      System.out.println("First number: "+number); 
     } 
     else { 
      System.out.println("Not found"); 
     } 
    } 
} 
+0

仅有代码的答案不如包含解释代码正在做什么的代码有用。 “教一个人钓鱼”等等。 – 2014-10-16 19:41:39

+0

不错的正则表达式教程 - http://tutorials.jenkov.com/java-regex/matcher.html – Matzz 2014-10-16 19:50:05

0
  • 循环通过在文件中的每一行。
  • 为此可以使用迭代器和其hasNext()方法
  • 一旦检索的线,由空的空间分割,如下所示:

    字符串str =“”;

    List < String> splitElements = Arrays.asList(str.split(“\ s +”));

  • 然后,遍历列表中的每个元素,创建一个helperMethod来验证元素是否为数字是个好主意。这可能与一些来实现这样的:

    公共静态布尔ISNUMERIC(串串){
    尝试
    {
    INT intString =的Integer.parseInt(串);
    }
    catch(NumberFormatException ex)
    {
    return false;
    }
    return true;
    }

  • 制作通知,它解析只是INT数字,创造更多的辅助方法,就大功告成了,希望它帮助!