如何使用 QString replace() 将 '/' 替换为 '\\'?

Posted

技术标签:

【中文标题】如何使用 QString replace() 将 \'/\' 替换为 \'\\\\\'?【英文标题】:How to replace '/' with '\\' using QString replace()?如何使用 QString replace() 将 '/' 替换为 '\\'? 【发布时间】:2012-08-07 08:27:18 【问题描述】:

有人可以帮忙吗?假设我有一个 QString,其中存储了某个文件的文件路径,我想用我试过的 \\(双反斜杠) 替换其中的 /(斜杠):

mystring.replace("/","\\");

但它只放置一个\ 而不是\\

替换前的字符串:D:/myfiles/abc.zip

替换后的字符串:D:\myfiles\abc.zip

预期字符串:D:\\myfiles\\abc.zip

【问题讨论】:

不太确定,但据我所知,QFile/QFileInfo 很乐意使用任何目录分隔符 我很惊讶这实际上可以编译。你不是用第三个`\`来逃避结束"吗?你使用什么语言? C++? 但是 adb 需要 '\\' :p 我正在制作一个自动化的 adb 工具 :) @CodesInChaos 有人编辑了我的帖子,这不是我在创建这个帖子时输入的真实代码,我的代码是 mystring.replace("/", "\\"); 【参考方案1】:

你需要使用:

mystring.replace("/","\\\\");

编译器使用\ 作为字符串中的转义字符(例如\t\n\r),因此\\ 实际上变成了\。如果需要两个反斜杠,则需要从四个开始。

【讨论】:

有没有办法在 QML 字符串中做同样的事情? @user3417815,这是一个单独的问题,所以应该作为一个单独的问题 :-) 新问题 everyone i> 看到而不是评论可能只有我会看到,特别是因为我没有做过任何 QML。【参考方案2】:

如果你想将路径转换为 ​​Windows 格式,你可以简单地使用QDir::toNativeSeparators():

qDebug() << QDir::toNativeSeparators("c:/windows/path"); // Prints "c:\windows\path"

【讨论】:

【参考方案3】:

1) 为什么要替换它们,AFAIR 正斜杠也适用于文件操作(与操作系统无关)。 2) 您是否尝试阅读文档 - 例如为什么 \\ 会导致单个反斜杠?

【讨论】:

android 手机中进行 adb 操作时,正斜杠不起作用,因此需要用双反斜杠替换它们(即使是单反斜杠也不起作用:p) 您可能已经阅读了上面 paxdiablo 在文档中发布的解释,它清楚地描述了使用单个 `\` 作为转义字符。每个转义字符都会转义其后的一个字符。

以上是关于如何使用 QString replace() 将 '/' 替换为 '\\'?的主要内容,如果未能解决你的问题,请参考以下文章

如何将 QVariant::fromValue 与 QString 一起使用?

如何将 QString 转换为 QString 指针?

如何将 UTF-8 数据转换为 QString

QString去掉前面字符串

从 QString 中删除前导零的最佳方法

如何使用 QSettings 将 QString 添加到注册表