[英]Java XX command line options unrecognized (e.g: -XX:+UseStringDeduplication, -XX:MaxGCPauseMillis)
[英]How to extract number of minutes from time sentence in java? e.g xx hrs xx mins
我知道標題令人困惑,但我想不出更好的標題。
說我有一個字符串,看起來可能像([number] hr(s)) [number] min(s)
例如, 1 min
, 15 mins
, 3 hrs 50 mins
, 1 hr 15 mins
, 4 hrs 1 min
等等。
如何有效地從此類字符串中提取分鍾數? 我也希望它也考慮到小時數,因此3 hrs 50 mins
將得出230
。 我唯一能想到的就是做很多if子句並使用正則表達式,但我想知道是否有更有效的方法。
為您提供更大靈活性的另一種方法:
public long getMinutes(String input) {
input = input.toLowerCase()
.replaceAll("mins?", "M")
.replaceAll("hrs?", "H")
.replaceAll("\\s+", "");
Duration d = Duration.parse("PT" + input);
return d.toMinutes();
}
( ideone的工作樣本 )
您的樣本數據的輸出:
1 min: 1
15 mins: 15
3 hrs 50 mins: 230
1 hr 15 mins: 75
4 hrs 1 min: 241
基本思想是將您的輸入轉換為Java的Duration#parse
方法支持的字符串( PT<hours>H<minutes>M
),然后解決這個問題。 您最終得到一個Duration
對象,該對象隨后提供了各種使用它的方法。
請注意,這將打印230
3 hrs 50 mins
。 如果只需要50
則簡單的正則表達式將是更簡單的方法。
(在生產代碼中,我將各種replaceAll
調用合並為一個,並使用不區分大小寫的模式匹配替換toLowerCase
,以提高效率。在此處明確保留此代碼是為了更好地理解。)
這是RegEx解決方案:
((\d+)\s*(hours|hrs|hr|h)\s*)?(\d\d?)\s*(minutes|mins|min|m)
分鍾數:
minutes = $1 * 60 + $4
規則:
1 min
等於0 hrs 1 min
i
選項) 游樂場: https : //regex101.com/r/u8BMtl/1
您可以使用以下代碼,希望對您有所幫助。
String time="3 hrs 50 mins";
String[] array = time.split(" ");
int minutes = 0;
if(array.length>2){ // if it has minute and hour content
minutes = Integer.parseInt(array[0])*60 + Integer.parseInt(array[2]);
} else{ // if time has only minute content
minutes = Integer.parseInt(array[0]);
}
如果您的時間是X小時Y分鍾
String time = "3 hrs 10 min";
String[] parts = time.split(" ");
int total = Integer.parseInt(parts[0]) * 60 + Integer.parseInt(parts[2]);
這段等待將為您提供一串小時,然后乘以60分鍾再加上分鍾。 如果您只需要幾分鍾,那就參加吧[2]
你也可以使用正則表達式
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.