我是Java的新手,并且正在努力解决一件可能很简单的问题。
我有不同格式的字符串。下面给出了一个示例字符串
New_System-Updater-For-19974774.ftw
基本上我想提取数字“ 19974774 ”。为此,我想找到索引“。”是的,因为字符串中只有一个点,然后返回并提取8个字符。
有一种简单的方法吗?
答案 0 :(得分:5)
String s = "New_System-Updater-For-19974774.ftw";
int positionOfDot = s.indexOf('.');
String withoutDotFtw = s.substring(0,positionOfDot);
String number = s.substring(s.lastIndexOf("-")+1,positionOfDot);
您可以尝试这样的事情
答案 1 :(得分:2)
如果你想要点之前的8个字符我建议:
String tst = "New_System-Updater-For-19974774.ftw";
int indexOfDot = tst.indexOf(".");
String extract = tst.substring(indexOfDot-8, indexOfDot);
System.out.println(extract);
如果数字大小不是8位数,请使用正则表达式
Pattern pattern = Pattern.compile("(\\d+)\\.");
Matcher matcher = pattern.matcher(tst);
if(matcher.find()){
extract = matcher.group(1);
}
System.out.println(extract);
答案 2 :(得分:0)
尝试这样的事情:
public static string GetNumberFromName(String name) {
String myString = "New_System-Updater-For-19974774.ftw";
return myString.split("\\d+\\.")[0].split("\\d+")[0];
}
答案 3 :(得分:0)
您可以使用以下代码检索所需的数字。
Pattern pattern = Pattern.compile("\\D*(\\d*)\\D*");
Matcher matcher = pattern.matcher(s);
if (matcher.find()) {
System.out.println(matcher.group(1));
}
答案 4 :(得分:0)
假设您希望字符串中最后一个句点前面的数字。你应该理想地使用正则表达式,但如果不熟悉正则表达式,这可能会更简单。
String string = New_System-Updater-For-19974774.ftw";
String[] splitString = string.split('.');
if(splitString.length > 1) {
String secondToLastString = splitString[splitString.length - 2]; //second to last string
int i = secondToLastString.length - 1;
for(; i >= 0; i--) {
if(!Character.isDigit(secondToLastString.charAt(i))) {//If not digit break out and use that index as bound
break;
}
}
return secondToLastString.substring(i + 1);
} else {
throw new IllegalArgumentException("string doesn't have proper format");
}
或者只使用正则表达式
String string = New_System-Updater-For-19974774.ftw";
Matcher matcher = Pattern.compile("(\\d*)\\.[^\\.]*").matcher(string);
if(matcher.find()) {
return matcher.group(1);
}
答案 5 :(得分:0)
假设数字之前总是有一个-
,这将起作用:
String initial = "New_System-Updater-For-19974774.ftw";
String firstSplit = initial.substring(initial.lastIndexOf("-") + 1);
String finalSplit = firstSplit.substring(0, firstSplit.indexOf("."));
假设位数固定为8,这将起作用:
String initial = "New_System-Updater-For-19974774.ftw";
String firstSplit = initial.substring(0, initial.lastIndexOf("."));
String finalSplit = firstSplit.substring(firstSplit.length()-8, firstSplit.length());
finalSplit
将是您的号码。