【问题标题】:Java - Converting escaped string to charsJava - 将转义字符串转换为字符
【发布时间】:2013-01-29 18:54:04
【问题描述】:

编辑:错误!下面的代码有效,在我的例子中,字符串被读取为“\n”,这给了我 2 个字符而不是 1 个字符。我很傻。

我正在尝试将孤立的单个字符从字符串转换为字符。我无法将转义字符转换为单个字符,因为它将 \ 视为单独的字符。

String str = "\n"; 
char charVal = str.charAt(0); // Gives charVal as \

是否有将转义序列解释为单个字符而不是单独字符的函数?

我正在尝试在没有 Apache commons 包的情况下执行此操作。

谢谢!

【问题讨论】:

    标签: java string unicode char


    【解决方案1】:

    回答更新的问题:您的结果不知何故变得混乱。 str 正好有一个字符,所以charVal 就是那个字符,换行符。检查输出,如果仍然不是您所期望的,请给我们一个 SSCCE 来证明您的问题。

    原答案:temp不是strstr.charAt(0)肯定不会给\作为结果。 str 是一个单字符的字符串,所以你只能得到一个字符,即换行符。很可能,您的代码中有更进一步的内容,例如:

    String temp = "\\n";
    

    在这种情况下,您有一个由两个字符组成的字符串,其中第一个是反斜杠。

    【讨论】:

    • 你需要再次检查输出,因为你上面写的不正确。请参阅我的更新答案。
    • 谢谢,你说得对。输入来自文件,但阅读器正在添加额外的 \'s。简化字符串确实可以解决问题。
    • 在一个相关的注释上 - 正如你所说,我确实有“\\n”。 str.replace("\\n","\n") 似乎使它表现良好。是否有更通用的形式来插入转义?显然 str.replace("\\","\") 不起作用。
    • 不知道你在问什么。这听起来像是您可能想在一个新的 SO 问题中解释的内容。
    【解决方案2】:

    无法复制

        String str = "\n";
        char charVal = str.charAt(0);
    
        System.out.println(charVal);
    

    换行

    【讨论】:

    • @RyanStewart 是的,刚刚注意到thanx
    • 谢谢!编辑原件以反映我的愚蠢。
    猜你喜欢
    • 1970-01-01
    • 2023-03-17
    • 1970-01-01
    • 2011-01-08
    • 2010-12-09
    • 2016-04-21
    相关资源
    最近更新 更多