上周我意外地将我的eclipse项目的所有字符串都外化了。我需要回复这个,我唯一的希望是sed。我试图创建脚本,但没有成功,因为我是新的sed,这将是一个非常复杂的操作。我需要做的是:搜索并替换为sed
字符串class.java
文件目前采用以下格式(方法)Messages.getString(<key>)
。示例:
if (new File(DataSource.DEFAULT_VS_PATH).exists()) {
for (int i = 1; i <= c; i++) {
if (!new File(DataSource.DEFAULT_VS_PATH
+ Messages.getString("VSDataSource.89") + i).exists()) { //$NON-NLS-1$
getnewvfspath = DataSource.DEFAULT_VS_PATH
+ Messages.getString("VSDataSource.90") + i; //$NON-NLS-1$
break;
}
}
}
键和匹配的字符串在messages.properties
文件中采用以下格式。
VSDataSource.92=No of rows in db =
VSDataSource.93=Verifying db entry :
VSDataSource.94=DB is open
VSDataSource.95=DB is closed
VSDataSource.96=Invalid db entry for
VSDataSource.97=\ removed.
key=string
所以我需要在Java文件重新格式如下:
if (new File(DataSource.DEFAULT_VS_PATH).exists()) {
for (int i = 1; i <= c; i++) {
if (!new File(DataSource.DEFAULT_VS_PATH
+ "String 2" + i).exists()) { //$NON-NLS-1$
getnewvfspath = DataSource.DEFAULT_VS_PATH
+ "String 1" + i; //$NON-NLS-1$
break;
}
}
}
我怎样才能做到这一点与sed
?还是有更简单的方法?
所以,我在你的'messages.properties'猜测'VSDataSource.89'是'字符串2'?你想用'messages.properties'中的'VSDataSource.xxx = yyy'中的'yyy'替换'Messages.getString('VSDataSource.xxx')'? – 2012-04-03 23:29:33
@ mathematical.coffee是的。 'key'不需要以'VSDataSource'开头,但对每个字符串都是唯一的。 – 2012-04-03 23:31:08
使用Java?这里有一个类似的东西:http://stackoverflow.com/questions/4766602/un-externalize-strings-from-eclipse-or-intellij。不用在Java文件中创建字符串,您可以浏览所有文件并进行正则表达式搜索和替换。 – 2012-04-03 23:35:58