Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从字符串中删除时间戳_Java_Regex_String_Timestamp_Substring - Fatal编程技术网

Java 从字符串中删除时间戳

Java 从字符串中删除时间戳,java,regex,string,timestamp,substring,Java,Regex,String,Timestamp,Substring,所以我一直在尝试从字符串中去掉一个时间戳,更具体地说是一个文件名 我尝试制作一个子字符串,但时间戳的大小是可变的 例如,有时是这样的: 2016-05-05 03:45:00.907text.txt 2016-05-05 03:45:00.83text.txt 有时是这样的: 2016-05-05 03:45:00.907text.txt 2016-05-05 03:45:00.83text.txt 也许正则表达式就是答案 要处理的字符串将始终具有时间戳和文件名。文件名可以以数字或字母开

所以我一直在尝试从字符串中去掉一个时间戳,更具体地说是一个文件名

我尝试制作一个子字符串,但时间戳的大小是可变的

例如,有时是这样的:

2016-05-05 03:45:00.907text.txt
2016-05-05 03:45:00.83text.txt
有时是这样的:

2016-05-05 03:45:00.907text.txt
2016-05-05 03:45:00.83text.txt
也许正则表达式就是答案

要处理的字符串将始终具有时间戳和文件名。文件名可以以数字或字母开头


我忘了说它是针对Java的。

这个
sed
将清除时间戳

$ echo "2016-05-05 03:45:00.83text.txt" | 
 sed -r 's/^[0-9]{4}(-[0-9]{2}){2} ([0-9]{2}:){2}[0-9]{2}\.[0-9]{2,3}//'

text.txt

也适用于另一种情况,但如果文件名为“7text.txt”,则不知道区别。

这将删除前导时间戳:

filename = filename.replaceAll("^\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}(\\.\\d+)?", "");
但是,当另一部分以数字开头时,您将无法区分“短”时间戳的结束和另一部分的开始

当时间戳有整秒(并且没有小数结尾)时,这也会处理


您必须使用正则表达式查找日期,然后将字符串转换为正确的日期,然后才能获得时间戳。

文本的
text.txt
长度是否始终相同?或者只使用regex文件名是否包含数字?是的,它可以包含数字@GrumpyCroutono,时间戳后的文本始终是变量@EatpeanutButter问题是:如何定义时间戳和文件名之间的边界?