首页 > 解决方案 > 替换为单个 Blackslash 在 Qt 中添加“

问题描述

我正在尝试将字符替换为!Qt中的字符,但是在这样做的同时,它增加了一个很难解决\的额外问题。"

我有一个像这样的原始数据: "\"v=0\\r\\no=- 1534195387162130326 2 IN IP4 127.0.0.1\\r\\ns=-\\r\\nt=0 0\\r\\na=group:BUNDLE audio video\\r\\na=msid-semantic: WMS\\r\\nm=audio 9 UDP/TLS/RTP/SAVPF 111 103 104 9 102 0 8 106 105 13 110 112 113 126...我希望数据是这样的:"v=0\r\no=- 6804998800185322649 2 IN IP4 127.0.0.1\r\ns=-\r\nt=0 0\r\na=group:BUNDLE audio video\r\na=msid-semantic: WMS\r\nm=audio 9 UDP/TLS/RTP/SAVPF 111 103 104 9 102 0 8 106 105 13 110 112 113 126...

所以,我的实现是这样的:

data.replace("\\", "!");
data.remove("\"");
data.replace("!", "\"");

它一直按预期运行,remove但在那之后它增加了额外"的,我最终得到的输出是: "v=0\"r\"no=- 757357016964659282 2 IN IP4 127.0.0.1\"r\"ns=-\"r\"nt=0 0\"r\"na=group:BUNDLE audio video\"r\"na=msid-semantic: WMS\"r\"nm=audio 9 UDP/TLS/RTP/SAVPF 111 103 104 9 102 0 8 106 105 13 110 112 113 126....

任何可以解决的想法都会很棒。

标签: c++qtescaping

解决方案


看来,您不是要替换!为,\而是要从字符串中删除双反斜杠和转义引号。

您可以通过以下两行来实现这一点:

data.remove("\\\""); // remove \"
data.replace("\\\\", "\\"); // replace \\ with \

推荐阅读