You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中从带单引号的字符串提取ASCII字符(含转义字符)问题

解决Java中解析单引号包裹的字符字面量问题

核心思路

先剥离字符串首尾的单引号,再根据剩余内容的长度和格式判断:

  • 如果是单个字符,直接返回该字符;
  • 如果是以\开头的双字符序列,匹配对应的转义字符(如\n转成换行符、\t转成制表符)。

代码实现

public static char parseCharLiteral(String input) {
    // 移除首尾的单引号
    String inner = input.substring(1, input.length() - 1);
    
    // 处理转义字符情况
    if (inner.length() == 2 && inner.charAt(0) == '\\') {
        char esc = inner.charAt(1);
        return switch (esc) {
            case 'n' -> '\n';
            case 't' -> '\t';
            case 'r' -> '\r';
            case 'b' -> '\b';
            case 'f' -> '\f';
            case '\'' -> '\'';
            case '\"' -> '\"';
            case '\\' -> '\\';
            default -> throw new IllegalArgumentException("不支持的转义序列: " + inner);
        };
    } 
    // 处理普通单字符情况
    else if (inner.length() == 1) {
        return inner.charAt(0);
    } 
    // 非法输入处理
    else {
        throw new IllegalArgumentException("无效的字符字面量: " + input);
    }
}

示例验证

  • 输入'A' → 返回'A'
  • 输入'\n' → 返回换行符\n
  • 输入'\t' → 返回制表符\t
  • 输入'\\' → 返回反斜杠\

这个方案覆盖了常见的转义字符场景,同时对非法输入抛出明确的异常,方便调试。

内容的提问来源于stack exchange,提问作者Pablo García Marcos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 04:15:00