2016-05-05 4 views
1

Так что я пытаюсь удалить временную метку из строки, имя файла будет более конкретным.Удалить временную метку из строки

Я попытался сделать подстроку, но размер временной метки является переменной.

Например, иногда это так:

2016-05-05 03:45:00.907text.txt 

, а иногда, как это:

2016-05-05 03:45:00.83text.txt 

Может быть, регулярное выражение является ответом?

Строка, подлежащая обработке, всегда будет иметь отметку времени и имя файла. Имя файла может начинаться с цифр или букв.

Я забыл сказать, что это для Java.

+0

Будет ли 'text.txt' всегда иметь одинаковую длину? Или просто использовать regex – WillardSolutions

+0

Будет ли имя файла когда-либо содержать номера? – GrumpyCrouton

+0

Да, он может содержать числа @GrumpyCrouton – Zamaking

ответ

0
String input = "2016-05-05 03:45:00.907text.txt"; 
String regex = "\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}\\.\\d+"; 
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSSS"); 
Pattern pattern = Pattern.compile(regex); 
Matcher matcher = pattern.matcher(input); 

if(matcher.find()){ 
    String output = matcher.group(); 

    Date date = formatter.parse(output); 
    long time = date.getTime(); 

    System.out.println(time); 
} 

Вы должны найти дату с регулярным выражением, то преобразовать строку в соответствующую Дату, а затем вы можете получить временную метку.

+0

Это решило, спасибо вам большое. – Zamaking

1

это 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».

0

Это удалит ведущие временные метки:

filename = filename.replaceAll("^\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}(\\.\\d+)?", ""); 

Но вы не сможете отличить конец «короткой» метки времени и начало другой части, когда другая часть начинаться с цифры.

Это также обрабатывается, когда временная метка имеет целые секунды (и не имеет дробного окончания).

Смежные вопросы