簡體   English   中英

Java字符串拆分無法使用冒號(“:”)正常工作

[英]Java String split not working as expected using a colon (“:”)

我正在嘗試刪除此字符串的秒數:

10/31/2009 9:46:16 AM

我正在嘗試使用以下功能來做到這一點:

public static String correctValue4(String str) {
    String parts[] = str.split(":");
    String fixedStr = parts[0] + ":" + parts[1];
    return fixedStr;
}

我想它會解析它並得到10/31/2009 9,然后在末尾添加46。 但是,運行時出現“ java.lang.ArrayIndexOutOfBoundsException:1”錯誤。 顯然,它不是在拾取零件[1]。

有任何想法嗎?

對於額外的業障:我需要將AM / PM附加回字符串的末尾。 因此,最后應該看起來像這樣:

10/31/2009 9:46 AM

謝謝,非常感謝您的幫助=)

編輯:

抱歉,我應該更具體地說明日期。 我正在做的是將制表符分隔的文本文件接受到應用程序中,然后對其進行格式化並將其輸出到新文件中。 我要做的就是根據請求從日期中刪除秒數並將其輸出; 我認為我只是將其復雜化而已。

蒂姆的答案在這種情況下有效!

謝謝大家提供的建議!

我會建議完全采用另一種方法:將值解析為適當的特定於域的類型(我將使用Joda Time的 LocalDateTime ),然后將其重新格式化為所需的格式。 這將同時執行驗證,因此您不會僅僅因為系統中恰好有冒號就傳播了不良數據。

Joda Time提供了解析和格式化功能(請參見DateTimeFormatDateTimeFormatter ),因此它應該非常簡單。

為什么不使用SimpleDateFormat

首先解析日期:

Date d = new SimpleDateFormat("MM/dd/yyyy h:mm:ss a").format(str);

然后格式化日期:

new SimpleDateFormat("MM/dd/yyyy h:mm a").format(d);

如果后面的空格是空格,您是否不能刪除冒號后跟兩位數字?

String resultString = subjectString.replaceAll(":\\d{2}(?= )", "");

如果字符串始終具有相同的格式(以2位數字表示秒,一個空格,它們是AM或PM),則可以使用每個String實例上可用的substring方法提取相關部分

String original = "10/31/2009 9:46:16 AM";
//-6 since we want to remove the : as well
String firstPart = original.substring( 0, original.length() - 6 );
String secondPart = original.substring( original.length() - 3, original.length() );
String result = firstPart + secondPart;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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