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问题是:如何定义时间戳和文件名之间的边界?