[英]Get Substring from a String in Java
我有以下文字:
......,Niedersachsen,自2009年3月3日起不收費,類別:...,
現在我想在NOT IN CHARGE SINCE:
之后提取日期NOT IN CHARGE SINCE:
直到逗號。 所以我只需要03.2009
作為我的子串的結果。
那我怎么辦呢?
String substr = "not in charge since:";
String before = s.substring(0, s.indexOf(substr));
String after = s.substring(s.indexOf(substr),s.lastIndexOf(","));
編輯
for (String s : split) {
s = s.toLowerCase();
if (s.contains("ex peps")) {
String substr = "not in charge since:";
String before = s.substring(0, s.indexOf(substr));
String after = s.substring(s.indexOf(substr), s.lastIndexOf(","));
System.out.println(before);
System.out.println(after);
System.out.println("PEP!!!");
} else {
System.out.println("Line ok");
}
}
但這不是我想要的結果。
您可以使用模式,例如:
String str = "Niedersachsen,NOT IN CHARGE SINCE: 03.2009, CATEGORY";
Pattern p = Pattern.compile("\\d{2}\\.\\d{4}");
Matcher m = p.matcher(str);
if (m.find()) {
System.out.println(m.group());
}
產量
03.2009
注意:如果您想在所有String中獲得類似日期,則可以使用while
不是if
。
編輯
或者您可以使用:
String str = "Niedersachsen,NOT IN CHARGE SINCE: 03.03.2009, CATEGORY";
Pattern p = Pattern.compile("SINCE:(.*?)\\,");
Matcher m = p.matcher(str);
if (m.find()) {
System.out.println(m.group(1).trim());
}
您可以使用:
來分隔String
。
String substr = "NOT IN CHARGE SINCE:";
String before = s.substring(0, s.indexOf(substr)+1);
String after = s.substring(s.indexOf(':')+1, s.lastIndexOf(','));
當然,正則表達式給你更多的方式做搜索/匹配,但假設“:”是你正在尋找的關鍵事情(在該位置恰好一次顯示出來),那么:
s.substring(s.indexOf(':')+1, s.lastIndexOf(',')).trim();
是獲取該子串的“最簡單”和“最少開銷”的方式。
提示:當您搜索單個字符時,請使用字符作為搜索模式; 不是一個字符串!
如果您有一個更通用的用例,並且您知道要匹配的文本結構,那么您可以從使用正則表達式中獲益:
Pattern pattern = Pattern.compile(".*NOT IN CHARGE SINCE: \([0-9.]*\),");
Matcher matcher = pattern.matcher(line);
System.out.println(matcher.group());
解決問題的一種更通用的方法是使用正則表達式匹配每個組之間:和,
Pattern pattern = Pattern.compile("(?<=:)(.*?)(?=,)");
Matcher m = p.matcher(str);
你必須為它創建一個模式。 試試這個作為一個簡單的正則表達式起點,並隨意即興:
String s = "...,Niedersachsen,NOT IN CHARGE SINCE: 03.2009, CATEGORY:....,";
Pattern pattern = Pattern.compile(".*NOT IN CHARGE SINCE: ([\\d\\.]*).*");
Matcher matcher = pattern.matcher(s);
if (matcher.find())
{
System.out.println(matcher.group(1));
}
這應該可以獲得您在日期收到的任何數字組。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.