如何使用 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() 将 '/' 替换为 '\\'?的主要内容,如果未能解决你的问题,请参考以下文章