微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Swift - 如何使用正则表达式查找一个 URL 并将其替换为另一个

如何解决Swift - 如何使用正则表达式查找一个 URL 并将其替换为另一个

我对 Regex 很陌生,但我认识到它的强大。

我在 UITextView 中成功渲染了通过 api 下载的 HTML。但是,我注意到有些图像没有显示。在挖掘代码时,我注意到未出现的图像有多个表示不同大小的图像 URL。

我想要做的是找到包裹在每个块中的第一个图像 URL 并用它替换其他 URL,以便每个块中的所有图像 URL 都相同。

我想出了一些可怕的“解决方案”,使用了一种正则表达式,但没有用。

是否可以:

  1. 找到图的第一个实例
  2. 找到块中的第一个图片网址
  3. 替换后续图片 URL,直到 /figure 被点击
  4. 重复直到 HTML 字符串结束

以下是 JSON 调用返回的 HTML 示例:

<head><Meta charset="UTF-8"><Meta name="viewport" content="width=device-width,initial-scale=1.0"><title>Document</title></head><body><span style='font-family:-apple-system;font-size:17'>
<h2 style=font-weight:800;color:0282F8>Header</h2>
  <p style=font-weight:300>Praesent sed molestie lectus,sit amet dictum eros. Donec varius,orci sit amet aliquet ultricies,odio elit maximus sem,et finibus nulla risus vitae sapien. Duis eu nulla et purus porttitor soDales. Nunc eget nisl id tellus elementum placerat. Proin tincidunt mi sollicitudin ex egestas dictum</p>
  <h2 style=font-weight:800;color:0282F8>Header</h2>
  <figure data-align="right" data-img-src="https://uploads/original/image-01.jpg" data-ref-id="1300-2086678" data-size="small" data-ratio="1.2257525083612" data-width="598" data-embed-type="image" style="width: 598px">
    <a class="fluid-height" style="padding-bottom:122.6%" href="https://uploads/original/image-01.jpg" data-ref-id="1300-2086678">
        <img alt="Praesent sed molestie lectus,sit amet dictum eros." src="https://uploads/scale_small/image-01.jpg" srcset="https://uploads/original/image-01.jpg 598w,https://uploads/scale_small/image-01.jpg.jpg 522w" sizes="(max-width: 522px) 100vw,522px" data-width="522"></a>
    <figcaption style=font-weight:500;font-size:13;color:666666>Pic 1 Caption</figcaption>
  </figure>
  <br>
  <p style=font-weight:300>Praesent sed molestie lectus,et finibus nulla risus vitae sapien. Duis eu nulla et purus porttitor soDales. Nunc eget nisl id tellus elementum placerat. Proin tincidunt mi sollicitudin ex egestas dictum</p>
  <h2 style=font-weight:800;color:0282F8>Header</h2>
  <p style=font-weight:300>Praesent sed molestie lectus,et finibus nulla risus vitae sapien. Duis eu nulla et purus porttitor soDales. Nunc eget nisl id tellus elementum placerat. Proin tincidunt mi sollicitudin ex egestas dictum</p>
      <figure data-align="right" data-img-src="https://uploads/original/image-02.jpg" data-ref-id="1300-627596" data-size="medium" data-ratio="1.2996254681648" data-width="267" data-embed-type="image" style="width: 267px">
    <a class="fluid-height" style="padding-bottom:130.0%" href="https://uploads/original/image-02.jpg" data-ref-id="1300-627596">
        <img alt="Praesent sed molestie lectus,sit amet dictum eros." src="https://uploads/original/image-02.jpg" srcset="https://uploads/original/image-02.jpg 267w" sizes="(max-width: 267px) 100vw,267px" data-width="267"></a>
    <figcaption style=font-weight:500;font-size:13;color:666666>Pic 2 Caption</figcaption>
  </figure>
  <br>
      <p style=font-weight:300>Praesent sed molestie lectus,et finibus nulla risus vitae sapien. Duis eu nulla et purus porttitor soDales. Nunc eget nisl id tellus elementum placerat. Proin tincidunt mi sollicitudin ex egestas dictum</p>
  <p style=font-weight:300><b>Praesent sed molestie lectus,</b></p>
  <figure data-align="right" data-img-src="https://uploads/original/image-03.jpg" data-ref-id="1300-2787249" data-size="small" data-ratio="0.42196531791908" data-width="346" data-embed-type="image" style="width: 346px">
    <a class="fluid-height" style="padding-bottom:42.2%" href="https://uploads/original/image-03.jpg" data-ref-id="1300-2787249">
      <img alt="Praesent sed molestie lectus,sit amet dictum eros." src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" sizes="(max-width: 320px) 100vw,320px" data-width="320" class="js-lazy-load-image" data-src="https://uploads/small_scale/image-03.jpg" data-srcset="https://uploads/original/image-03.jpg 346w,https://uploads/small_scale/image-03.jpg 320w">
      <noscript>
          <img alt="Praesent sed molestie lectus,sit amet dictum eros." src="https://uploads/small_scale/image-03.jpg" srcset="https://uploads/original/image-03.jpg 346w,https://uploads/small_scale/image-03.jpg 320w" sizes="(max-width: 320px) 100vw,320px" data-width="320">
        </noscript>
    </a>
    <figcaption style=font-weight:500;font-size:13;color:666666>Pic 3 Caption</figcaption>
  </figure>
  <br>
  <p style=font-weight:300>Praesent sed molestie lectus,et finibus nulla risus vitae sapien. Duis eu nulla et purus porttitor soDales. Nunc eget nisl id tellus elementum placerat.</p>
  <h3 style=font-weight:600>Sub Header</h3>
  <p style=font-weight:300>Praesent sed molestie lectus,et finibus nulla risus vitae sapien. Duis eu nulla et purus porttitor soDales. Nunc eget nisl id tellus elementum placerat. Proin tincidunt mi sollicitudin ex egestas dictum</p>
      </span></body>

感谢您的帮助。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?