如何在iOS中的两个已知子字符串之间获取子字符串?

时间:2018-04-19 03:13:41

标签: ios swift string

我从服务器返回了XML错误,错误的感兴趣部分片段是这样的:

... <p class="break-long-words trace-message">SQLSTATE[23502]: Not null violation: 7 ERROR: null value in column &quot;name&quot; violates not-null constraint<br /> DETAIL: Failing row contains (165, null, null, 11, null, 2018-04-19 03:01:48, null, f, 6).</p> ...

因为这在开发过程中经常发生,所以我想让我更容易扫描这个特定的错误消息并将其报告给后端团队。因此,从上面的错误中,我得出结论,我可以自信地使用SQLSTATE获取开始的子字符串,并在 </p>之前结束。所以清理的错误将是:

SQLSTATE[23502]: Not null violation: 7 ERROR: null value in column &quot;name&quot; violates not-null constraint<br /> DETAIL: Failing row contains (165, null, null, 11, null, 2018-04-19 03:01:48, null, f, 6).

问题是,如何在Swift中做到这一点? XML错误不仅仅是这个。我只是切出了兴趣点。但是会有大量的<p></p>标签。

1 个答案:

答案 0 :(得分:0)

使用https://stackoverflow.com/a/32306142/300392中的扩展我已经实现了自己的解决方案:

if xml.contains("</p>") {
    let beginIndex = xml.index(of: "SQLSTATE")!
    let result1 = String(xml[beginIndex...]);

    let endIndex = result1.index(of: "</p>")!;
    let endIndexBefore = result1.index(before: endIndex);
    let result2 = String(result1[...endIndexBefore]);

    print ("SQL ERROR: \(result2)");
}