我想只从输入字符串中提取数值。我该怎么办,请提出一些想法。
输入字符串是这样的 string str =" 03-01-13_16-47-42.Test1001.csv"
我只想要数值,即1001
任何人都可以帮我解决我应该使用的模式以及我如何才能获取数值?
答案 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]);