Использование регулярных выражений (не рекомендуется)
Нет прямого способа выразить это.Фактически это почти идентично выяснению, находится ли данное число в определенном диапазоне.(То есть, предоставление регулярного выражения, совпадающего с цифрами в диапазоне 123-456.)
Вы можете "закодировать" его довольно сложным регулярным выражением.Процесс, который я описал здесь:
Для конкретного примераот "abc"
до "def"
вы бы написали это так:
a
с последующим b
с последующим c-z
или c-z
, за которым следует любой символ, или
b-c
, за которыми следуют любые два символа, или d
, за которыми следует a-d
сопровождаемый любым символом или e
, за которым следует
Вот оно в коде:
String pattern = "a(b[c-z]|[c-z][a-z])|[bc][a-z][a-z]|d([a-d][a-z]|e[a-f])";
for (String s: "abc acc ace amf def efg khp mlo".split(" "))
System.out.println(s + (s.matches(pattern) ? " matches" : ""));
Выход:
abc matches
acc matches
ace matches
amf matches
def matches
efg
khp
mlo
Использование String.compareTo
(рекомендуется)
Вместо этого следует рассмотреть сравнение строк:
"abc".compareTo(s) <= 0 && s.compareTo("def") <= 0
Пример:
String lower = "abc", upper = "def";
for (String s: "abc acc ace amf def efg khp mlo".split(" ")) {
boolean match = lower.compareTo(s) <= 0 && s.compareTo(upper) <= 0;
System.out.println(s + (match ? " matches" : ""));
}
Выход:
abc matches
acc matches
ace matches
amf matches
def matches
efg
khp
mlo