仅将输入文件名中的数值提取为字符串

时间:2014-05-07 10:13:32

标签: java

我想只从输入字符串中提取数值。我该怎么办,请提出一些想法。

输入字符串是这样的 string str =" 03-01-13_16-47-42.Test1001.csv"

我只想要数值,即1001

任何人都可以帮我解决我应该使用的模式以及我如何才能获取数值?

4 个答案:

答案 0 :(得分:0)

您可以使用ascii值,这些数字都已分组,以便您可以说(伪代码):

if ascii(1st char) is less than 58 and higher than 47 
then NumericString = NumericString + 1st char

然后重复第二个char等。

当然这会得到ginz所指出的所有数值,但你总是可以从后来的char开始,而不是从1开始。

答案 1 :(得分:0)

当您在java中将char转换为int时,您将获得其ascii代码,如果它在[48-57]范围内,则它是0到9之间的数字。可以通过以下方式做到这一点:

String input = <name of the file>; 
String result = "";
for (int i = 0; i < input.length(); ++i) {
    char currChar = input.charAt(i);
    if(currChar >= '0' && currChar <= '9')
        result += input.charAt(i);
}

答案 2 :(得分:0)

如果

 String str= "03-01-13_16-47-42.Test1001.csv"

模式始终保持不变,您可以使用正则表达式来获得所需的值

    String str= "03-01-13_16-47-42.Test1001.csv";
    Pattern p = Pattern.compile(".*Test([0-9]*).csv");
    Matcher m = p.matcher(str);
    if(m.matches()) {
        System.out.println(m.group(1));
    }

希望这有帮助。

答案 3 :(得分:0)

    String input = "03-01-13_16-47-42.Test1001.csv";
    String delim = "\\D+";
    String[] nums = input.split(delim);
    System.out.println(Arrays.toString(nums));

这应该有效,但如果您只想要&#34; .csv&#34;之前的数值。即1001,然后打印数组的最后一个值:

    System.out.println(nums[nums.length - 1]);
相关问题