将转义字符添加到字符串的简单方法

时间:2010-01-11 23:48:55

标签: java xml string emacs

有没有人有一个简单的工具可以将非转义字符串转换为转义字符串?

例如,我正在尝试将以下数据粘贴到Java String数据类型中:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

我手动添加斜杠:

<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>

然后我可以粘贴到我的java代码中:

String xml="<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>";

当它是一个3MB的字符串时,添加斜杠会非常烦人。我知道find / replace可以在很多工具中工作,但我经常这样做,所以我需要更快的方法。

这一定是一个常见问题。大多数开发人员做了什么?我认为一个好的Emacs宏可以做到这一点,但我没有看到任何明显的东西。

6 个答案:

答案 0 :(得分:3)

如果它是3MB字符串,我会从文件中读取它,而不是在源代码中对其进行硬编码。

答案 1 :(得分:2)

正则表达式。

s/(?=["\\])/\\/g

您可以使用要转义的任何其他字符填写字符类。

答案 2 :(得分:2)

看看prin1-to-string

例如,调用以下命令将最近杀死/保存/剪切的文本作为转义字符串插入/粘贴:

(defun yank-escaped-string ()
  (interactive)
  (insert (prin1-to-string (substring-no-properties (current-kill 0)))))

请记住,转义机制用于生成Elisp读取的字符串,其约定可能类似于您的目标但不完全相同。

答案 3 :(得分:2)

答案 4 :(得分:0)

Apache Betwixt包含用于此目的的实用程序功能here

答案 5 :(得分:0)

为了支持@Mark Ba​​yer的答案,这里有一个单行程序,用于将文件内容读入字符串。

String s = org.apache.commons.io.FileUtils.readFileToString("someFile");

这是Apache Commons FileUtils class的Javadoc。

您可以从头开始实现等效功能; e.g。

StringBuilder sb = new StringBuilder();
Reader r = new BufferedReader(new FileReader("somefile"));
try {
    int ch;
    while ((ch = r.read()) != -1) {
       sb.append((char) ch);
    }
} finally {
    r.close();
}
String s = sb.toString();

将怪异的大字符串嵌入到源代码中......即使是丢弃测试......也是如此蹩脚