首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在不使用双反斜杠文件分隔器的情况下列出Windows OS文件夹的文件

在不使用双反斜杠文件分隔器的情况下列出Windows OS文件夹的文件
EN

Stack Overflow用户
提问于 2018-10-16 03:18:51
回答 1查看 90关注 0票数 0

我想列出Windows OS文件夹的文件。我想使用Kotlin中的Windows文件地址而不使用双反斜杠。我不想让Kotlin在这里解释反斜杠。

你在我问题的结尾找到了我最好的结果。

错误:(3,24) Kotlin:非法逃脱:'\ M‘返回以下内容:

代码语言:javascript
复制
fun main(args: Array<String>) {
    var s: String = "G:\My Web Sites\"
    println(s)
}

我不想每次都用反斜杠打开反斜杠。我认为它看上去不太好,而且很难来回复制。

工作,但不漂亮:

代码语言:javascript
复制
fun main(args: Array<String>) {
    var s: String = "G:\\My Web Sites\\"
    println(s)
}

漫游:

也许我会去做直到我找到另一个解决方案。

是否有机会切换File.separator?

当然,这也给我带来了同样的错误,因为替换已经太晚了:

代码语言:javascript
复制
import java.io.File
fun main(args: Array<String>) {
    var s: String = "G:\My Web Sites\"
    val replace = s.replace('/', File.separatorChar);
    println(replace)
}

最佳结果:

我得到的最好结果如下。它返回正确的文件针刺,但现在返回文件夹中的文件。它返回正确的字符串:"G:\My站点\“

代码语言:javascript
复制
import java.io.File

fun main(args: Array<String>) {
    var s = """"G:\My Web Sites\"""
    println(s)
    s= s.replace("\\", "\\\\")
    println(s)
    File(s).walk().forEach  { println(it) }
}


private fun String.replace(regex: Regex, notMatched: (String) -> String, matched: (MatchResult) -> String): String {
//    its from https://github.com/http4k/http4k/blob/master/http4k-core/src/main/kotlin/org/http4k/core/UriTemplate.kt
    val matches = regex.findAll(this)
    val builder = StringBuilder()
    var position = 0
    for (matchResult in matches) {
        val before = substring(position, matchResult.range.start)
        if (before.isNotEmpty()) builder.append(notMatched(before))
        builder.append(matched(matchResult))
        position = matchResult.range.endInclusive + 1
    }
    val after = substring(position, length)
    if (after.isNotEmpty()) builder.append(notMatched(after))
    return builder.toString()
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-16 04:34:14

您应该在代码中使用斜杠,JVM将在Windows上自动将其转换为反斜杠(参见Forward slash or backslash?)。

如果您真的喜欢使用反斜杠,那么原始字符串"""就可以完成这项工作,以后不需要手动替换它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52827496

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档