#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];
Это должно сработать.