2011-07-13 38 views
2

在一些别人写的,人们已经使用null检查条件为null!=abcnull==abc这个Java代码,但我需要分别将其更改为abc!=nullabc==null搜索在Java代码中一些字符串和替换它

有人告诉我,这可以很容易地使用正则表达式来完成,因为直到现在我正在执行手动任务,但是搜索它然后手动替换它。

+3

出于好奇:你为什么要改变它? – Howard

+0

@haward:其中一位经理告诉我..即使我不知道为什么..只是我需要改变.. –

+0

你在做什么编辑/环境/ ide - 这与你如何做正则表达式 – antlersoft

回答

3

我不知道所有这可能是在布尔表达式的右侧的要求,但假设它是一个变量名,\w将是一个大致精确的搜索(见http://download.oracle.com/javase/tutorial/java/nutsandbolts/variables.html变量的完整规范名)。

搜寻字符串:

null\s*([!=]=)\s*(\w+) 

替换字符串

$1 $2 null 
+2

你应该用'\ s *'替换'\ s +'来匹配OP给出的例子。 – Howard

+0

@霍华德谢谢,我想那是我在想什么,不知道我为什么要放'+'。 – Nicole

+0

@Renesis:我尝试过上面的一个。首先替换字符串应该是'$ 2 $ 1 null',并且更多的只能在简单条件下工作,而不适用于复杂条件。我也一样阅读,一旦我能够找到某些东西,我会评论。 –

0

它不能使用正则表达式正确。

考虑

/* 
Print whether null==abc. 
*/ 
System.out.print("null==abc : " + (null==abc)); 

如果你想只改变代码,第三null==abc以上,那么你可以通过使用天真正则表达式得到的字符串和评论内容意外更改替换更改代码。

而且你要小心不要改变

null==abc.def 

abc==null.def 

或改变

null==abc(def) 

abc==null(def) 

如果您对潜在的字符串和注释更改感到满意,并且要检查更改以确保您没有打破任何方法调用,那么您可以在perl中始终执行此操作。

perl -i.bak -pe 's/null(\s*[!=]=\s*)([\w.]+)/$2$1null/g' YourJavaFile.java