[英]how to do pattern matching of string in java?
在我的應用程序中,服務器收到了一些響應。 我得到的時間格式是"PT10H2M1S","PT1H2S","PT0S" etc
。 如果字符串中存在H
,那么我必須在此之前將數字記為hours 。 如果字符串中存在M
,則我必須在此之前將數字作為分鍾 。 如果字符串中存在S
,那么我必須在該秒之前輸入數字。 我該怎么做?
static Pattern p = Pattern.compile("PT(?:([0-9]+)H)?(?:([0-9]+)M)?(?:([0-9]+)S)?");
static void parse(String s){
Matcher m = p.matcher(s);
m.find();
String hh = m.group(1);
String mm = m.group(2);
String ss = m.group(3);
System.out.println("s="+s+" hh="+hh+" mm="+mm+" ss="+ss);
}
使用Pattern
和Matcher
類。
String hours;
String mins;
String secs;
Matcher m = Pattern.compile("(\\d+)H|(\\d+)M|(\\d+)S");
while(m.find())
{
hours = m.group(1);
mins = m.group(2);
secs = m.group(3);
}
Matcher m = Pattern.compile("(\\d+)H|(\\d+)M|(\\d+)S");
你需要的裘德string
的可能長度string
或contains ("M")
和contains ("H")
......
越來越小時
public String getHour(String time)
{
String hourString[] = time.split("H");
String[] hour = hourString[0].split("T");
return hour[1];
}
越來越細
public String getMinute(String time)
{
String minuteString[] = time.split("M");
String spitedMinute[] = null;
String finalMinute[] = null;
//check if H available
if(minuteString[0].contains("H"))
{
spitedMinute = minuteString[0].split("H");
finalMinute = spitedMinute[1].split("M");
return finalMinute[0];
}
else
{
finalMinute = minuteString[0].split("T");
}
return finalMinute[1];
}
獲得第二
public String getSecond(String time)
{
String spitedMinute[];
String Second[];
String spitedHour[];
String splitedSecondString;
String timeData[];
if(time.contains("M"))
{
spitedMinute = time.split("M");
Second = spitedMinute[1].split("S");
}
else if(time.contains("H"))
{
spitedHour = time.split("H");
splitedSecondString = spitedHour[1];
if(splitedSecondString.contains("M"))
{
spitedMinute = splitedSecondString.split("M");
Second = spitedMinute[1].split("S");
}
else
{
Second = spitedHour[1].split("S");
}
}
else
{
timeData = time.split("S");
Second = timeData[0].split("T");
return Second[1];
}
return Second[0];
}
用這個
String s = "PT1H22M18S";
int hIndex = s.indexOf('H');
int mIndex = s.indexOf('M');
int sIndex = s.indexOf('S');
String hours="",mintues="",seconds="";
if (hIndex > 0) {
hours = s.substring(2, hIndex);
}
if (mIndex > 0) {
if (hIndex > 0) {
mintues= s.substring((hIndex + 1), mIndex);
} else {
mintues= s.substring(2, mIndex);
}
}
if (sIndex > 0) {
if (mIndex > 0) {
seconds= s.substring((mIndex + 1), sIndex);
} else {
if (hIndex > 0) {
seconds= s.substring((hIndex + 1), sIndex);
} else {
seconds= s.substring(2, sIndex);
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.