【问题标题】:Java insert text line above specifice text in string from file with string indentationJava在带有字符串缩进的文件中的字符串中的特定文本上方插入文本行
【发布时间】:2021-01-29 15:52:57
【问题描述】:

我从文件中读取了简单的文本,我将其内容作为字符串获取

String pomxml = "c:\\foo\\test.json";
String content = FileUtils.readFileToString(file); 

字符串内容(示例)是:

"email_settings": {
      "email.starttls.enable":"true",
      "email.port":"111",
      "email.host":"xxxx",
      "email.auth":"true",
}

我喜欢在 "email.host":"xxxx" 上方插入新字符串,前提是它找到了。 所以它看起来像:

"email_settings": {
      "email.starttls.enable":"true",
      "email.port":"111",
      "email.name":"myTest",
      "email.host":"xxxx",
      "email.auth":"true",
}

我的问题是如何将这一新行插入到字符串中

更新 在这个例子中它是 JSON ,但它也可以是简单的文本或 XML 文件 所以我不能依赖 JSON 提供程序

【问题讨论】:

  • 好的。你有什么问题?
  • 用问题更新了问题
  • 到目前为止你尝试了什么?
  • 您可以不依赖 JSON 提供程序使用 Jackson 或 Guice 使用简单的 if 条件来执行此操作吗?
  • @Mohammad 你有例子吗?我不能依赖 json,因为它也可以是 json 文件

标签: java string search replace


【解决方案1】:
content = content.replace("\"email.host\":", "\"email.name\":\"myTest\",\n" + "      \"email.host\":");

或者您可以查看解析 json 文件的库。

【讨论】:

  • 感谢我更新了我的问题,它也可以不是 json 文件,它只是示例
【解决方案2】:

可以尝试在此处进行正则表达式替换:

String input = "\"email_settings\": {\n      \"email.starttls.enable\":\"true\",\n      \"email.port\":\"111\",\n      \"email.host\":\"xxxx\",\n      \"email.auth\":\"true\",\n}";
String output = input.replaceAll("([ ]*\"email.host\":\".*?\")", "      \"email.name\":\"myTest\",\n$1");
System.out.println(output);

打印出来:

"email_settings": {
      "email.starttls.enable":"true",
      "email.port":"111",
      "email.name":"myTest",
      "email.host":"xxxx",
      "email.auth":"true",
}

但是,如果您正在处理正确的 JSON 内容,那么您应该考虑改用 JSON 解析器。将 JSON 文本解析为 Java POJO,然后使用新字段写出。

【讨论】:

  • input.replace() 在这里会不会更好?当然,假设目标字符串总是相同的。
  • @Amongalen 好吧,我替换了正则表达式模式,不知道在我们想要插入的标记字段前面可能有多少空格。是的,如果我们只假设固定文本,我们可以使用replace
  • 我能数一下 [ ]* 捕获中有多少个空格吗?
  • 这是一个开放式问题。你能具体说明你想做什么吗?
  • 我提供的代码示例绝对有效。很可能,您遇到的其他问题与您上面实际提出的问题不同。我已经回答了这个问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-21
  • 2020-01-03
  • 1970-01-01
  • 2022-06-19
  • 2014-03-11
  • 1970-01-01
相关资源
最近更新 更多