如何将JavaScript代码转换为一个大的Java字符串

3

我有1000行JavaScript代码需要转换为Java字符串,以便我可以通过System.out.println或其他方式输出。

我正在寻找一个在线工具来转义所有引号...最好是针对我的特定需求而设计的工具,因为我不想改变其他特殊字符。像这样的代码行:

var rgx = /(\d+)(\d{3})/;

需要保持原样。

情况要求将 JavaScript 放入字符串中,所以请不要使用变通方法。


1
+1 给那个胆怯的匿名投票者。这不是一个模糊或无用的问题。也许这样做不明智,但问题足够清楚。 - Andrew Rollings
4个回答

5
这里有一个链接,其中包含Crockford实现的quote()函数。使用它来构建自己的JavaScript转换器。
编辑:我还稍微修改了函数,默认输出一个ascii安全字符串。
编辑2:只是一个建议:最好将JavaScript保存在外部文件中,在运行时读取它,而不是硬编码...
编辑3:这是一个功能完备的解决方案-只需复制到.html文件中并替换虚拟脚本即可。
<script src="quote.js"></script>
<script>
// this is the JavaScript to be converted:
var foo = 'bar';
var spam = 'eggs';

function fancyFunction() {
    return 'cool';
}
</script>
<pre><script>
document.writeln(quote(
    document.getElementsByTagName('script')[1].firstChild.nodeValue, true));
</script></pre>

这个脚本的更好版本,还包括引号转义:http://jsbin.com/ujumus/11/ - Yahor
答案中的两个链接不起作用,但 @Yahor 的链接仍然有效,可以查看 js 引用示例。尽管如此,研究Mr. Crockford的是值得的。 - Timo
@Yahor,在 js bin 中,我无法在 HTML 中看到 js 引用文件的位置。而且我也不知道除了 quote 之外的其他函数是做什么的。 - Timo
@Timo 这是同一个脚本的简化版本 https://jsbin.com/qifisaromi - Yahor

1

1
我不明白这与问题有何关联,问题是关于在字符串中转义引号,而不是让1000行JavaScript变得更小。 - ninesided
他们将1000行JavaScript压缩成一行JavaScript。 - Diodeus - James MacFarlane
2
@Diodeus:但这不是Paul想做的事情-他正在寻找一个函数,为脚本中使用的不安全字符生成适当的转义序列... - Christoph

0

您可以使用jsmin工具将Javascript压缩为一行(希望如此),但它不会转义引号。这可以通过编辑器或服务器端脚本语言中的搜索/替换来完成。


行数是相关的,您可以在字符串中使用换行符。 - ninesided

0

所以我尝试的所有方法最终都破坏了JavaScript。最后我通过以下方式使其工作:

使用Notepad++:

  1. 按Shift + Tab多次取消缩进

  2. 查看 -> 显示行尾

  3. 突出显示LF字符并进行替换全部以替换为空字符串
  4. 重复CR字符

  5. 突出显示“(引号字符)并用\”(转义引号)替换全部...只是将引号字符键入替换提示中,由于某种原因仅抓取了一些引号。

  6. 现在您有1个非常长的行...我最终不得不将1个字符串分成大约2000个字符长的行....这个疯狂的长行正在杀死IE和/或破坏Java字符串限制。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接