package org.nutz.lang.util; import org.nutz.lang.Strings; public class IntRange { public static IntRange make(String s) { char[] cs = Strings.trim(s).toCharArray(); int i = 0; for (; i < cs.length; i++) { char c = cs[i]; if (c == ',' || c == ':') break; } if (i == cs.length) return make(Integer.parseInt(new String(cs))); int left = Integer.parseInt(String.valueOf(cs, 0, i)); return make(left, Integer.parseInt(String.valueOf(cs, ++i, cs.length - i))); } public static IntRange make(int right) { return make(0, right); } public static IntRange make(int left, int right) { return new IntRange(left, right); } private int left; private int right; private IntRange(int left, int right) { this.left = left; this.right = right; } public boolean in(int n) { return n > left && n < right; } public boolean on(int n) { return n == left || n == right; } public boolean inon(int n) { return on(n) || in(n); } public boolean gt(int n) { return n < left; } public boolean lt(int n) { return n > right; } /** * @param n * @return n >= left && n < right; */ public boolean linon(int n) { return n >= left && n < right; } /** * @param n * @return n > left && n <= right; */ public boolean rinon(int n) { return n > left && n <= right; } public int getLeft() { return left; } public void setLeft(int left) { this.left = left; } public int getRight() { return right; } public void setRight(int right) { this.right = right; } public String toString() { return String.format("%d:%d", left, right); } }