在Java代码中搜索某个字符串并替换它

发布于 2024-11-23 14:50:08 字数 222 浏览 1 评论 0原文

在其他人编写的这段java代码中,人们使用了null检查条件作为null!=abcnull==abc,但是我需要将其分别更改为 abc!=nullabc==null

有人告诉我,这可以使用正则表达式非常轻松地完成,因为到目前为止我正在执行手动任务,但搜索它然后手动替换它。

In this java code that some one else has written, people have used null check condition as null!=abc or null==abc, but I need to change it to abc!=null and abc==null respectively.

Someone told me that this can be done using regular expressions very easily, as till now I was performing a manual task, but searching it and then replacing it manually.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

寒尘 2024-11-30 14:50:08

我不知道布尔表达式右侧的所有要求,但假设它是变量名,\w 将是大致准确的搜索(请参阅http://download.oracle.com/javase/tutorial/java/nutsandbolts/variables.html 了解变量名称的完整规范)。

搜索字符串:

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

替换字符串

$1 $2 null

I do not know all the requirements for what could be on the right side of the boolean expression, but assuming it is a variable name, \w will be a roughly accurate search (see http://download.oracle.com/javase/tutorial/java/nutsandbolts/variables.html for the full specification of variable names).

Search string:

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

Replace string

$1 $2 null
記柔刀 2024-11-30 14:50:08

使用正则表达式无法正确完成此操作。

考虑

/*
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

It cannot be done correctly with regular expressions.

Consider

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

If you want to change only the code, the third null==abc above, then you can get unintended changes to string and comment content by naively using regular expression replaces to change code.

And you want to be careful to not change

null==abc.def

to

abc==null.def

or to change

null==abc(def)

to

abc==null(def)

If you're OK with potential string and comment changes, and are going to review the changes to make sure you didn't break any method calls, then you can always do this in perl.

perl -i.bak -pe 's/null(\s*[!=]=\s*)([\w.]+)/$2$1null/g' YourJavaFile.java
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文