intellij-idea - 尝试在 IntelliJ 中进行结构替换
问题描述
我想将我的注释从@RequestMapping 替换为@GetMapping、@PutMapping ...注释。当我查看 IntelliJ 中的结构查找/替换时,它看起来可以完成这项工作。
我尝试在搜索中添加以下内容
@RequestMapping( $key$ = $value$) 在键上添加了一个过滤器。文本=方法。
现在我想从值 (RequestMethod.GET) 中提取 ,之后的单词。(时期)。然后在替换中添加
@[Word(TitleCase)]Mapping([除了在搜索中提取的键、值之外的所有内容])
一直无法弄清楚如何解决这个问题。很高兴知道这是否无法完成,或者有关如何执行此操作的任何建议。在 SO 上查看了其他一些问题,但没有找到任何可以帮助的东西。大多数答案是在这些情况下使用正则表达式。
前:
@RequestMapping(
value = "/channels/{channel_name}",
method = RequestMethod.POST,
produces = MediaType.APPLICATION_JSON_VALUE,
consumes = MediaType.APPLICATION_JSON_VALUE)
public Channel updateChannel(
@PathVariable("channel_name") String channelName,
@Valid @RequestBody Channel channel) {
return channelService.updateChannel(channelName, channel);
}
@RequestMapping(
value = "/channels/{channel_name}",
method = RequestMethod.DELETE,
produces = MediaType.APPLICATION_JSON_VALUE)
public Channel deleteChannel(
@PathVariable("channel_name") String channelName) {
return channelService.deleteChannel(channelName);
}
后
@PostMapping(value = "/channels/{channel_name}",
produces = MediaType.APPLICATION_JSON_VALUE,
consumes = MediaType.APPLICATION_JSON_VALUE)
public Channel updateChannel(
@PathVariable("channel_name") String channelName,
@Valid @RequestBody Channel channel) {
return channelService.updateChannel(channelName, channel);
}
@DeleteMapping(
value = "/channels/{channel_name}",
produces = MediaType.APPLICATION_JSON_VALUE)
public Channel deleteChannel(
@PathVariable("channel_name") String channelName) {
return channelService.deleteChannel(channelName);
}
解决方案
我会用正则表达式做这个肮脏的:
- 替换
RequestMethod.(.)(.+)(?=,)
为RequestMethod.\U$1\L$2
(\L 会将文本转换为小写。) - 替换
@RequestMapping\((\s+)(.+)(\s+?)(.+)RequestMethod.(.+?),
成@$5Mapping\($1$2$3
.
然后简化这个替换链:
替换@RequestMapping\((\s+)(.+)(\s+?)(.+)RequestMethod.(\S)(.+?),
成@\U$5\L$6\EMapping\($1$2
更新:注意到第一个参数value
未指定是否在行@Mapping
或独立行中。
- 如果您需要它在 的行中
@Mapping
,请替换@RequestMapping\((\s+)(.+)(\s+?)(.+)RequestMethod.(\S)(.+?),\s
为@\U$5\L$6\EMapping\($2$3
。 - 如果您需要它到独立行,请替换
@RequestMapping\((\s+)(.+)(\s+?)(.+)RequestMethod.(\S)(.+?),
为@\U$5\L$6\EMapping\($1$2
.
推荐阅读
- wordpress - 如果不再维护块插件,块会发生什么?
- xml - 找不到元素“汽车”的声明
- amazon-web-services - 如何在 AWS LightSail Linux 实例上打开端口 25
- android - 从 Android 中的 Firebase 实时数据库中检索数据 - recyclerview
- list - 如何应用断言条件来更改列表?
- python - 如何从字符串而不是文档字符串运行 doctest 示例?为什么需要缩进?
- html - 为什么 iframe 不继承父级的样式?
- javascript - 如何在 socket.io 上获取 https
- azure - 如何在 Azure 数据工厂中获取管道文件夹路径?
- go - 在golang中获取数组的长度并将其存储在const中