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

Mil*_*loš 17 java string

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

我想从这个字符串中只提取日期,所以最后我会有"01-01-2012",但不知道如何做到这一点.

Jon*_*eet 39

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

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

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

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

    text = text.split(" ")[0];
    
    Run Code Online (Sandbox Code Playgroud)

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

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


jue*_*n d 13

String input = "01-01-2012 01:01:01";
String date = d.split(" ")[0];
Run Code Online (Sandbox Code Playgroud)


Tom*_*icz 6

试试这个:

String date = s.substring(0, s.indexOf(" "));
Run Code Online (Sandbox Code Playgroud)

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

String date = s.substring(0, 10);
Run Code Online (Sandbox Code Playgroud)

或使用StringUtils.substringBefore():

String date = StringUtils.substringBefore(s, " ");
Run Code Online (Sandbox Code Playgroud)