判断序号是否在指定号段内
示例代码
java
public class NumberRangeChecker {
public static void main(String[] args) {
// 定义号段起始和结束字符串
String start = "AFF2025010800000";
String end = "AFF20250108FFFFF";
// 待判断的字符串
String str = "AFF202501080EF001";
// 使用 compareToIgnoreCase 判断是否在号段内
if (str.compareToIgnoreCase(start) >= 0 && str.compareToIgnoreCase(end) <= 0 && str.length() == end.length()) {
System.out.println("在号段内");
} else {
System.out.println("不在号段内");
}
}
}
方法说明
compareToIgnoreCase(String anotherString)
compareToIgnoreCase
是 JavaString
类中的一个方法,用于比较两个字符串的字典顺序。- 忽略字符串中的大小写差异。
用法
- 方法返回一个整数值:
- 返回负数:当前字符串小于指定字符串。
- 返回 0:当前字符串等于指定字符串。
- 返回正数:当前字符串大于指定字符串。
比较原理
compareToIgnoreCase
方法逐字符比较两个字符串。- 比较时将每个字符转换为其 Unicode 值。
- 忽略大小写时,会将大写字母和对应的小写字母视为相等(例如
'A'
和'a'
的 Unicode 值差异会被忽略)。 - 如果某个字符在 Unicode 顺序上小于另一个字符,则返回负数;如果大于,则返回正数;如果相等,则继续比较下一个字符。
- 如果一个字符串是另一个字符串的前缀,则较短的字符串被认为更小。
示例
java
String a = "abc";
String b = "ABC";
String c = "abd";
System.out.println(a.compareToIgnoreCase(b)); // 输出 0,表示相等(忽略大小写)
System.out.println(a.compareToIgnoreCase(c)); // 输出负数,因为 "abc" 小于 "abd"
System.out.println(c.compareToIgnoreCase(a)); // 输出正数,因为 "abd" 大于 "abc"
代码逻辑
在本代码中,使用 compareToIgnoreCase
方法来比较待判断的字符串与起始号段、结束号段字符串。
- 第一个条件:
str.compareToIgnoreCase(start) >= 0
表示待判断字符串大于或等于起始字符串。 - 第二个条件:
str.compareToIgnoreCase(end) <= 0
表示待判断字符串小于或等于结束字符串。 - 第三个条件:
str.length() == end.length()
确保字符串长度一致。