【问题标题】: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("/", "\\");

标签: qt path qt4 cross-platform


【解决方案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 在文档中发布的解释,它清楚地描述了使用单个 `\` 作为转义字符。每个转义字符都会转义其后的一个字符。
    猜你喜欢
    • 2022-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-28
    • 1970-01-01
    相关资源
    最近更新 更多