当前位置:  开发笔记 > 编程语言 > 正文

从java项目中提取所有字符串

如何解决《从java项目中提取所有字符串》经验,为你挑选了2个好方法。

我有相当多的源文件,我需要解析并提取所有字符串文字,并将它们作为播放旧的Java常量放在一个文件中.
举个例子:

Label l = new Label("Cat");

会成为:

Label l = new Label(Constants.CAT);

而且Constants.java我会:

public final static String CAT = "Cat";

我不希望字符串在属性文本文件中外部化.
一个原因是一致性和代码可读性.
另一个是我们的客户端代码使用GWT,它不支持Java属性文本文件机制.

我可以写一些解析器(可能使用ant替换任务)?
但我想知道是否IDE已经自动完成了这类事情.



1> paxdiablo..:

Eclipse会自动执行此操作.右键单击该文件,选择"Source",然后选择"Externalize strings"

这并不完全符合您的要求(将Constants.java文件中的字符串作为字符串),但使用的方法确实非常强大.它将它们移动到属性文件中,该文件可以根据您的语言环境动态加载.如您所建议的那样将它们放在单独的Java源文件中意味着您可以立即在应用程序中使用所有语言,或者根据区域设置提供不同的应用程序.

我们将它用于我们的应用程序,即使基本的东西必须用英语和日语发货 - 我们更复杂的应用程序有12种语言 - 我们不是一个小型的软件开发公司:-).

如果你确实想要它们在Java文件中,尽管已经提到了这些缺点,编写程序将属性文件转换为Java源文件比尝试从自由格式Java源提取字符串要容易得多.

您需要做的就是修改Accessor类以使用内置字符串(在单独的类中),而不是在运行时加载它们.



2> VonC..:

要完成Peter Kelley的回答,你可以考虑使用eclipse IDE AST解决方案.

然后,您可以编写一个AST程序来解析源代码并执行您想要的操作.

这个eclipse角文章中提供了一个完整的例子,还有eclipse帮助中的更多细节.
您可以在清单5中找到自动化在Eclipse JDT中嵌入领域特定语言的 "就地翻译实现"部分的一些示例,以及GitHub项目中的多个示例.

推荐阅读
手机用户2502851955
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有