有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我只想从输入字符串中提取数值。我怎么做?请给我一些想法

输入字符串如下 string str=“03-01-13_16-47-42.Test1001.csv”

我只想要数值,即1001

谁能帮我弄清楚我应该使用什么样的模式,以及如何只获取数值


共 (4) 个答案

  1. # 1 楼答案

    如果

     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));
        }
    

    希望这有帮助

  2. # 2 楼答案

    在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);
    }
    
  3. # 3 楼答案

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

    这应该行得通,但如果您只希望在“.csv”之前输入数值,即1001,则打印数组的最后一个值:

        System.out.println(nums[nums.length - 1]);
    
  4. # 4 楼答案

    您可以使用ascii值,数字都被分组,这样您就可以说(伪代码):

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

    然后重复第二个字符等

    当然,这会得到ginz指出的所有数值,但你总是可以从后面的字符开始,而不是从第一个字符开始