从字符串中提取5个字符

时间:2015-04-22 20:12:07

标签: java

我是Java的新手,并且正在努力解决一件可能很简单的问题。

我有不同格式的字符串。下面给出了一个示例字符串

New_System-Updater-For-19974774.ftw

基本上我想提取数字“ 19974774 ”。为此,我想找到索引“。”是的,因为字符串中只有一个点,然后返回并提取8个字符。

有一种简单的方法吗?

6 个答案:

答案 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将是您的号码。