Как форматировать строку в Java?

#java

#java

Вопрос:

У меня эта строка 00 hours 01 minutes 25 seconds хранится в переменной. Как я могу преобразовать ее в 00:01 часы и минуты в Java

то, что я пробовал, это:

 String s = "00 hours 01 minutes 25 seconds";
System.out.println(s);
String []a = s.split(" , ");
String s2 = a[0]   a[2];
 

Комментарии:

1. 1. new недопустимое имя переменной — это зарезервированное ключевое слово. 2. Вы используете неправильное регулярное выражение для разделения строки. Вместо этого используйте s.split(» «)

Ответ №1:

Это newS даст желаемый результат

 String s = "00 hours 01 minutes 25 seconds";
System.out.println(s);
String []a = s.split("\s");
String newS = a[0]   ":"   a[2];
System.out.println(newS);
 

Комментарии:

1. String.split использует регулярное выражение, а не подстроки

2. Не со всеми пробелами, и в вопросе их не указано

3. @tibetiroka Я вижу вашу точку зрения в использовании s вместо " " , но я обычно работаю с " " , и у меня нет проблем с этим. Можете ли вы объяснить мне, когда это будет проблемой?

4. Это может быть проблемой, если ваше приложение используется в разных регионах или с разными кодировками, не everythink соблюдает преобразование UTF-16 (или стандартный код пробельных символов ascii), или (если ваша строка вменена), она не будет работать с табуляторами. Однако \s поддерживает любые символы пробела (это сокращение от регулярного выражения [ tnx0B f r]). Если вы хотите быть действительно в безопасности, вы можете использовать \s*, который соответствует любому количеству пробелов.

5. Что ж, большое вам спасибо за объяснение. Я также отредактирую свой amswer для использования s

Ответ №2:

Ваша логика верна, однако в вашей реализации есть некоторые проблемы.

 //String.split() uses regular expressions, this will split at spaces
String[] a = s.split("\s");
String newString = a[0] ":" a[2];
 

Это должно сработать.