簡體   English   中英

如何在java中對字符串進行模式匹配?

[英]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);
}

使用PatternMatcher類。

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的可能長度stringcontains ("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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM