【问题标题】:Replacing a part from a given String替换给定字符串的一部分
【发布时间】:2017-12-30 09:21:00
【问题描述】:

我在字符串中读取了 html 文件的内容。 html 文件内部是包含这部分“s1=some_user_elegance”的链接。我想将some_user替换为指定用户;

String html = ....
String user = "John Davis"
String resultHTML = {all `"s1=some_user_elegance"` need to be replaced with `"s1=john_davis_elegance"}`

另外,我不知道"some_user"是谁。可以是任何人,但格式相同。

编辑:找到解决方案

public void identifyS1(String s) {
    String[] strings = s.split("\n");
    System.out.println(strings[28].substring(70, strings[28].length()).split(" ")[0].trim().replaceAll("\"", ""));
}

返回"s1=whatever_user_elegance"

我用新行分割了 html 文件,找到了包含 URL 的任何行,其余的很容易。好在 html 永远不会改变....

【问题讨论】:

  • 你有没有做任何研究,比如阅读documentation of String
  • 我投票决定将此问题作为题外话结束,因为它非常简单,而且肯定有太多关于 SO 的答案
  • 在投票结束问题之前,请完整阅读。我知道 replaceAll();方法,但它不起作用,因为“some_user”是动态的,它可以是“scot_peterson”,也可以是“ben_white”,因此我不知道要替换什么。如果它是常量 "some_user" replaceAll("some_user", "john_davis") 会起作用。

标签: java string replace


【解决方案1】:

您必须找到要匹配的特定正则表达式,然后调用replaceAll()。困难的部分是找到与您的数据完美匹配的正则表达式。但是,看看下面的正则表达式,它将替换匹配 s1=x_x_elegance 之间的任何内容

String html = "{all `\"s1=some_user_elegance\"` need to be "
    + "replaced with `\"s1=john_davis_elegance\"`}";

System.out.println(html.replaceAll("s1=\\w+?_\\w+?_elegance",
"\"s1=john_davis_elegance\""));

结果

{all `""s1=john_davis_elegance""` need to 
be replaced with `""s1=john_davis_elegance""`}

【讨论】:

  • 更换很简单,问题是如何找到“s1=xxxx_yyyy_elegance”
  • 是的,因此您可能应该用正则表达式标记您的问题,并提供更多输入数据和预期输出的示例。我提供了一个示例正则表达式,它有一个不情愿的量词,似乎可以工作。也许这可以成为您的起点。
  • @ЂорђеЂашић 看看我提供的新正则表达式,它与您正在寻找的匹配。
猜你喜欢
  • 2022-07-18
  • 1970-01-01
  • 2012-05-18
  • 2017-09-19
  • 1970-01-01
  • 1970-01-01
  • 2012-07-17
  • 1970-01-01
相关资源
最近更新 更多