首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用正则表达式替换字符串中可以更改的参数

使用正则表达式替换字符串中可以更改的参数
EN

Stack Overflow用户
提问于 2018-09-21 23:39:32
回答 2查看 269关注 0票数 1

假设我有一个字符串,输入字符串的不同版本:

代码语言:javascript
运行
复制
a) Name='book' Number='345' Version='12' Author='name1'
b) Name='book' Version='12' Author='name1' Number='345'

我需要从该输入字符串中删除Version='xx' and Number='xx'。此参数的值始终可以更改。

做这件事最好的方法是什么?我尝试过regex,类似于:

代码语言:javascript
运行
复制
String input = input.substring(0, input.indexOf("Number")) + "" + input.substring(input.indexOf("Version"));

但这只适用于这种情况:

代码语言:javascript
运行
复制
a) Name='book' Number='345' Version='12' Author='name1'

但不是为了这个:

代码语言:javascript
运行
复制
b) Name='book' Version='12' Author='name1' Number='345'

那么如何制定一个通用的方法呢?

EN

Stack Overflow用户

发布于 2018-09-21 23:44:19

您可以使用正则表达式替换:

代码语言:javascript
运行
复制
"Name='book' Number='345' Version='12' Author='name1'"
    .replaceAll("( Number| Version)='\\d+'", "")

这将返回Name='book' Author='name1'

replaceAll("( Number| Version)='\\d+'", "")查找NumberVersion,后跟单引号中的数字,并将其替换为空字符串。

正如下面的Aaron's comment所建议的,如果键/值对的顺序可以改变,那么不同的正则表达式可能更好:

代码语言:javascript
运行
复制
s.replaceAll("(?:^| )(?:Number|Version)='\\d+'", "").trim()

无论键之前是空格还是在行的开头,这都将与键匹配。

票数 5
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52447078

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档