Bir giriş dizesinin geçerli bir 24 saatlik tarih biçiminde olup olmadığını belirlemeye çalışıyorum (örn. Ss: dd: ss). Birkaç farklı mantık kullanıyorum ve çoğunlukla test durumumla başarılı oldum. Kodum şu anda denediğim tüm girdiler için başarısız oluyor (aşağıda olanlar dahil).Girdi dizgisinin Java'da normal ifadeleri kullanarak saat zamanıyla eşleşip eşleşmediğini belirleyin.
sentezleme şu şekilde işler beklenir:
11:24:10
çıktılayacaktırValid form
- girilmesi
00:13:42
çıktılayacaktırValid form
- giren
24:52:25
çıktılayacaktırInvalid form
- girilmesi girilmesi
05:62:55
çıktılayacaktırInvalid form
İşte benim kod:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
System.out.print("String to check: ");
String input = new Scanner(System.in).nextLine();
if (input.matches("((0|1)[0-9])|(2[0-3]):[0-5][0-9]:[0-5][0-9]")) {
System.out.println("Valid form");
} else {
System.out.println("Invalid form");
}
}
}
Ben sadece son zamanlarda Java öğrenmeye başladım ve daha önce bu soru istendi özür dilerim (I googled!). Yardım ettiğin için teşekkür ederim!
Sorunuzda biraz daha spesifik olabilir misiniz? Bu kod nasıl başarısız oluyor (ör. Hangi test senaryolarında)? Hangi test vakalarında başarılı oluyor? – Josephus
@Alex Denediğim tüm girdiler için geçersiz form döndürür. – Vishal
Sorunuz gerçekten Regex ile ilgili ise, o zaman bazı iyi cevaplarınız var. Sorunuz gerçekten gün-zaman değerlerini doğrulamakla ilgiliyse, Regex yerine ['LocalTime'] kullanmanızı öneririz (http://docs.oracle.com/javase/8/docs/api/java/time/ Java.time çerçevesi içinde Java 8 ve üstü (Java 6 & 7 ve Android için arka bağlantı noktaları ile) yerleşik LocalDate.html) sınıfı. –