【问题标题】:Constants for special characters? [closed]特殊字符的常量? [关闭]
【发布时间】:2014-01-29 16:41:08
【问题描述】:

是否有任何通用库为常用的分隔符提供常量(如,;"),类似于StringUtils.SPACE/EMPTY/LF/CR

【问题讨论】:

  • 您想要一个包含 4-5 个字符串值的整个库?
  • 没有,但 apache.lang3 包含我为空格、空、换行符编写的常量。也许我错过了一些东西,任何常见/apache 字符串 util 也包含分隔符?
  • @membersound 还有System.lineSeparator()。您可以使用任何东西作为分隔符,因此由您来编写常量文件(如果需要)。
  • 现在是 2017 年。有没有这样的课程?

标签: java apache


【解决方案1】:

有名字但不是常量。

    for (int cp = 32; cp < 48; ++cp) {
        System.out.printf("%c : %s%n", cp, Character.getName(cp));
    }

  : SPACE
! : EXCLAMATION MARK
" : QUOTATION MARK
# : NUMBER SIGN
$ : DOLLAR SIGN
% : PERCENT SIGN
& : AMPERSAND
' : APOSTROPHE
( : LEFT PARENTHESIS
) : RIGHT PARENTHESIS
* : ASTERISK
+ : PLUS SIGN
, : COMMA
- : HYPHEN-MINUS
. : FULL STOP
/ : SOLIDUS

使用常量很麻烦,所以我认为没有人努力。

你可以自己做,也许使用上面的 Character.getName 生成枚举,用下划线替换名称中的空白。

enum Chars {
    COMMA(','),
    SEMICOLON(';'),
    EXCLAMATION_SIGN('!');

    private final int ch;
    private static Map<Integer, Chars> map = new HashMap<>();
    static {
        for (Chars c : Chars.values()) {
            map.put(c.ch, c);
        }
    }

    private Chars(int ch) { this.ch = ch; }

    public int toCodePoint() { return ch; }

    public static Chars fromCodePoint(int cp) {
        return map.get(cp);
    }

    @Override
    public String toString() { return new String(new int[]{ ch }, 0, 1); }
}

请注意,枚举也有一个名称 getter,用于“COMMA”等。

【讨论】:

  • 现在是 2017 年。有没有这样的课程?
猜你喜欢
  • 2018-08-21
  • 1970-01-01
  • 2016-07-27
  • 2021-03-03
  • 1970-01-01
  • 2013-05-14
  • 2014-09-25
  • 2019-05-18
  • 1970-01-01
相关资源
最近更新 更多