从java中的文件中提取数值

时间:2014-10-16 19:27:03

标签: java file integer substring extract

我的文件(rates.txt)包含:Abc defghijk lmn opqr st uvwxyza bc 19

我想从文件中仅提取19并将其存储为整数。

我该怎么做?

我尝试过使用子字符串但不确定使用什么方法才能使其只选择数值。

由于

3 个答案:

答案 0 :(得分: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 :(得分: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");
        }
    }
}

答案 2 :(得分:0)

  • 遍历文件中的每一行。
  • 为此,您可以使用Iterator及其方法hasNext()
  • 一旦您检索到一条线,请按空白区分割,如下所示:
      

    String str ="&#34 ;;

         

    列表与LT;串GT; splitElements = Arrays.asList(str.split(" \ s +"));

  •   
  • 然后,遍历列表中的每个元素,创建一个帮助验证元素是否为数字的helperMethod是个好主意。可以通过以下方式实现:

    public static boolean isNumeric(String string){
      尝试
      {
        int intString = Integer.parseInt(string);
      }
      catch(NumberFormatException ex)
      {
        返回false;
      }
      返回true;
    }

  • 请注意它只解析 int 数字,创建更多辅助方法并完成,希望它有所帮助!