如何删除字符串中一个字符后的所有字符?

时间:2012-02-14 12:01:34

标签: java string

我有一个包含日期的字符串,例如“01-01-2012”,然后是空格,然后是时间“01:01:01”。完整的字符串是:“01-01-2012 01:01:01”

我想从这个字符串中只提取日期,所以最后我会有“01-01-2012”,但不知道该怎么做。

12 个答案:

答案 0 :(得分:38)

四个选项(为了使这一个答案添加的最后两个选项包括其他人给出的选项):

  • 将整个事物解析为日期/时间,然后只取日期部分(Joda时间或SimpleDateFormat
  • 使用indexOf查找第一个空格,并使用substring获取前导子字符串:

    int spaceIndex = text.indexOf(" ");
    if (spaceIndex != -1)
    {
        text = text.substring(0, spaceIndex);
    }
    
  • 相信它以指定的格式有效,并且第一个空格将始终位于索引10处:

    text = text.substring(0, 10);
    
  • 按空格拆分字符串然后取第一个结果(对我来说似乎效率不高,但它会起作用......)

    text = text.split(" ")[0];
    

如果不是空格,你应该考虑你想要发生什么。这是否意味着数据开始时无效?你应该继续使用整个字符串吗?这取决于你的情况。

我个人可能会选择第一个选项 - 你真的想解析“01-01-2012 wibble-wobble bad data”,好像它是一个有效的日期/时间吗?

答案 1 :(得分:13)

String input = "01-01-2012 01:01:01";
String date = d.split(" ")[0];

答案 2 :(得分:6)

试试这个:

String date = s.substring(0, s.indexOf(" "));

或者甚至(因为长度是固定的):

String date = s.substring(0, 10);

或使用StringUtils.substringBefore()

String date = StringUtils.substringBefore(s, " ");

答案 3 :(得分:2)

有很多方法可以做到这一点,一个非常简单的方法是在空格处拆分String并使用第一部分(这将是日期):

String dateTime = "01-01-2012 01:01:01";
String date = dateTime.split(" ")[0];

答案 4 :(得分:1)

您可以使用String.split()并仅在结果中String采用相关String[] [在您的示例中,它将是myString.split(" ")[0]

答案 5 :(得分:1)

在字符串中只有一个空格的情况下,您可以使用String.split(" ")。但这是一种不好的做法。你应该用DateFormat解析日期

答案 6 :(得分:1)

您可以使用substring仅提取日期:

 String thedatetime = "01-01-2012 01:01:01";
 String thedateonly = thedate.substring(0, 10);

你应该仔细阅读字符串的javadoc,以便了解可用的函数。

答案 7 :(得分:1)

如果您事先知道这是字符串的格式,我会这样做:

public String getDateOnly(String fullDate){
    String[] spl = fullDate.split(" ");
    return spl[0];
} 

答案 8 :(得分:1)

您可以使用字符串操作API:

String datetime =  "01-01-2012 01:01:01";
int spacePos = datetime.indexOf(" ");
if (spacePos > 0) {
   String date = datetime.substring(0, spacePos - 1);
}

或使用正则表达式:

Pattern p = Pattern.compile("(\\d{2}-\\d{2}-\\d{4})");
String datetime =  "01-01-2012 01:01:01";
Matcher m = p.matcher(datetime);
if(m.find()) {
   String date = m.group(1);
}

或使用SimpleDateFormat

DateFormat fmt = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");
Date date = fmt.parse(datetime);
Calendar c = Calendar.getInstance();
c.setTime(date);
String date = c.getDayOfMonth() + "-" + c.getMonth() + "-" + c.getYear();

答案 9 :(得分:0)

使用String.substring(int, int)。如果您对日期和时间的值感兴趣,请使用SimpleDateFormatter来解析字符串。

答案 10 :(得分:0)

myString.substring(0,10);

如果您的字符串始终采用该格式(2位数,减号,2位数,减号,4位数,空格等...),那么您可以使用substring(int beginIndex, int endIndex)字符串方法来获得所需内容。<登记/> 请注意,第二个参数是返回子字符串后字符的索引。

答案 11 :(得分:0)

如果要从字符串中分解完整日期,请使用此方法。

/**
 * @param dateTime format string
 * @param type type of return value : "date" or "time"
 * @return String value
 */

private String getFullDate(String dateTime, String type) {
    String[] array = dateTime.split(" ");
    if (type == "time") {
        System.out.println("getDate: TIME: " + array[1]);
        return array[1];

    } else if (type == "date") {
        System.out.println("getDate: DATE: " + array[0]);
        return array[0];
    } else {
        System.out.println("NULL.");
        return null;
    }
}

否则,如果您只需要解释日期 01 -01-2012

使用它:

/**
 * @param datetime format string
 * @return
 */
private String getOnlyDate(String datetime) {
    String array[] = datetime.split("-");
    System.out.println("getDate: DATE: " + array[0]);

    return array[0];

}

我希望我的回答会对你有帮助。