如何操作此字符串以便在 Java 中查找和更改原始字符串的一部分?

Posted

技术标签:

【中文标题】如何操作此字符串以便在 Java 中查找和更改原始字符串的一部分?【英文标题】:How can I manipulate this string in order to find and change a section of my original string in Java? 【发布时间】:2021-11-23 17:19:26 【问题描述】:

我正在开发一个 Java 应用程序,但遇到以下问题。

我有一个这样的字符串(代表 API 端点的 URL):

https://www.XXX.it/wp-json/custom-api/notary?title=Marina%20Rossi&wpcf-idnotary=089cy5Ra9zE=&wpcf-nome-notary=Marina....................

出于某种原因,我必须将idnotary 查询参数的值替换为另一个值。我只能直接在此字符串上执行此操作,而不是在添加参数时执行此操作,因此我的问题是基于如何执行此字符串操作而不是如何向请求添加参数。

基本上,我需要一种方法,从这个字符串开始,用我的应用程序中另一个变量表示的另一个字符串替换 idnotary= 之后和 &wpcf-nome-notary 之前的值。

在实践中,这个值或之前的字符串089cy5Ra9zE必须在原始字符串中被识别和替换(考虑到它可以改变,因为每个请求都会有不同的值)。

【问题讨论】:

一种选择是使用带有捕获组的模式来进行替换。 (idnotary=)[^\s&]*regex101.com/r/cJHxkf/1 您可以将查询字符串解析为映射(使用正确的工具包),更改右键的值,然后重建查询...您也可以只使用 regex/find/replace通常的方式。你试过什么? @Thefourthbird 你能帮我一些代码吗?我不知道我必须做什么 那么,您尝试过什么,您到底卡在哪里了? @AndreaNobili 你可以在这里看到一些示例代码regex101.com/r/pmMDSg/1/codegen?language=java 【参考方案1】:
public static String replaceIdnotary(String url,String newIdnotary)
    return url.replaceAll("(?<=wpcf-idnotary=)[^&]*",newIdnotary);
  

【讨论】:

以上是关于如何操作此字符串以便在 Java 中查找和更改原始字符串的一部分?的主要内容,如果未能解决你的问题,请参考以下文章

在更改 ruby​​ 中的某些值后,如何维护具有原始值的哈希副本?

OBIEE:在数据透视表中查找频率

查找和替换字符串

Java Android - 查找文件扩展名

如何使用批处理文件中的变量查找和替换 %PATH% 系统变量中的字符串?

如何复制不受原始 ArrayList 更改影响的 ArrayList? [复制]