String regex ="0123456789abcdef";
if (hexNumber == null) return binaryNumber; // проверим, что хекс не равно 0
for (int i = 0; i < hexNumber.length(); i++) { // проверить что символы лежат в шаблоне
if (regex.matches(hexNumber.charAt(i)))
continue;
else return "";
}
Сергей Ильин
35 уровень
не могу разобраться как проверить что все значения лежат в шаблоне, я вообще в правильном направлении?? мне поможет метод matches?
Обсуждается
Комментарии (14)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Сергей Ильин президент
23 февраля 2022, 11:35
и так пробывал не вдуплю вообще как этот метод работает
0
Ksenia VolkovaJava Developer в DXCMaster
23 февраля 2022, 11:34
Если ты хочешь решать именно с использованием regex, то надо изучить регулярные выражения получше.
Но regex - не единственный способ.
0
Сергей Ильин президент
23 февраля 2022, 11:37
просто это пока единственные мотоды которые я нашел, которые это проверяют. можно еще цикл в цикле попробывать?
0
Сергей Ильин президент
23 февраля 2022, 11:38
import java.util.regex.Pattern; и в задаче не просто так импортируют этот класс
0
Ksenia VolkovaJava Developer в DXCMaster
23 февраля 2022, 11:44
Его использовать совсем необязательно.
А если все же хочется, то придется прогрузиться в регулярки поглубже.
Но есть и другие способы. Цикл в цикле - один из них, но есть и проще, с одним циклом.
0
Сергей Ильин президент
23 февраля 2022, 12:13
String b ="0123456789abcdef";
int j = 0;
while (j < hexNumber.length()) {
if ((hexNumber.charAt(j) == b.charAt(0)) || (hexNumber.charAt(j) == b.charAt(1))
|| (hexNumber.charAt(j) == b.charAt(2)) || (hexNumber.charAt(j) == b.charAt(3)) ||
(hexNumber.charAt(j) == b.charAt(4)) || (hexNumber.charAt(j) == b.charAt(5)) || (hexNumber.charAt(j) == b.charAt(6)) ||
(hexNumber.charAt(j) == b.charAt(7)) || (hexNumber.charAt(j) == b.charAt(8)) || (hexNumber.charAt(j) == b.charAt(9)) ||
(hexNumber.charAt(j) == b.charAt(10)) || (hexNumber.charAt(j) == b.charAt(11)) || (hexNumber.charAt(j) == b.charAt(12)) ||
(hexNumber.charAt(j) == b.charAt(13)) || (hexNumber.charAt(j) == b.charAt(14)) || (hexNumber.charAt(j) == b.charAt(15))) {
j++;
continue;
}
else return "";
}
Я, конечно добился проверки одним циклом , но это ппц просто, не читаемо
0
Сергей Ильин президент
23 февраля 2022, 12:13
может подскажете как поудобнее можно циклом
0
Сергей Ильин президент
23 февраля 2022, 11:34
String regex ="0123456789abcdef";
if (hexNumber == null) return binaryNumber; // проверим, что хекс не равно 0
for (int i = 0; i < hexNumber.length(); i++) {// проверить что символы лежат в шаблоне
String a = String.valueOf(hexNumber.charAt(i));
if (a.matches(regex))
return "";
b nfr ghj,sdfk
0
Сергей Ильин президент
23 февраля 2022, 11:31
String regex ="0123456789abcdef";
if (hexNumber == null) return binaryNumber; // проверим, что хекс не равно 0
for (int i = 0; i < hexNumber.length(); i++) {// проверить что символы лежат в шаблоне
String a = String.valueOf(hexNumber.charAt(i));
if (Pattern.matches(regex, a))
так пробывал тоже не правильно
0
Павел Безумный учёный Expert
23 февраля 2022, 11:52
Метод matches() работает по-другому:
Метод вызывается на строке str, то есть мы проверяем, что строка str соответствует некоторому шаблону. Сам шаблон передаётся аргументом в метод matches(). Такой способ проверки не требует посимвольного считывания проверяемой строки - все необходимые операции будут выполняться скрыто "под капотом".
Сам шаблон составляется по правилам синтаксиса регулярных выражений:
1) квадратные скобки означают символьный класс, или, говоря иначе, что в проверяемой строке должен присутствовать один из символов, перечисленных в скобках;
2) 0-9 - это диапазон цифр от 0 до 9 включительно, то есть любая цифра от 0 до 9;
3) a-f - диапазон символов от a до f включительно (аналогично цифрам);
4) + - "жадный" квантификатор, который означает, что выражение в квадратных скобках будет применяться не только к первому символу строки, но и ко всем остальным.
Словами это регулярное выражение можно описать так: "строка, в которой первый и все последующие символы либо являются цифрой, либо буквой латиницы от a до f".
0
Сергей Ильин президент
23 февраля 2022, 13:12
спасибо большое, дошло до меня как применять метод этот. намного удобнее чем городить циклы
0
Павел Безумный учёный Expert
23 февраля 2022, 13:26
Регулярки - очень полезная штука. Нужно потратить некоторое количество времени на их освоение, но, на мой взгляд, они этого времени стоят:
Регулярные выражения (теория)
RegexOne (практика)
0
Сергей Ильин президент
23 февраля 2022, 13:53
благодарю безумный учёный👌
0
Сергей Ильин президент
23 февраля 2022, 11:21
надо проверить что строка String hexNumber = "9d0", каждые ее символ соответствует шаблону. как это сделать
0