标题: [文本处理] 【已解决】怎样判断文本中指定字符后有没有换行符? [打印本页]
作者: smss 时间: 2019-6-27 11:31 标题: 【已解决】怎样判断文本中指定字符后有没有换行符?
本帖最后由 smss 于 2019-6-28 10:13 编辑
判断1.txt文本中>后没有换行符则添加换行符 如果有换行符号则不添加
注意是怎样判断 不是怎样替换
作者: WHY 时间: 2019-6-28 09:26
- $str = [IO.File]::ReadAllText('1.txt', [Text.Encoding]::Default) -replace '>(?!\r\n)', ">`r`n";
- [IO.File]::WriteAllText('2.txt', $str, [Text.Encoding]::Default)
复制代码
作者: smss 时间: 2019-6-28 10:41
本帖最后由 smss 于 2019-6-28 12:56 编辑
回复 2# WHY - cd /d "%~dp0"
- PowerShell "$s=[IO.File]::ReadAllText('1.txt', [Text.Encoding]::UTF8) -replace ''', '''' -replace '>(?!\r\n)', "">`r`n""";[IO.File]::WriteAllText('2.txt', $s, [Text.Encoding]::UTF8)"
复制代码
可是双引号转义需要这样 同上次说的有点不同
有没有比较全面的转义教学推荐呢 非常感谢!
直接运行一点事没有 但是加了延迟就不行了- @echo off&SetLocal EnableDelayedExpansion
- ::此处有其它需要环境延迟的代码 需要再次关闭 真的坑 有木有 不知道大神都是怎样解决的
- setlocal disabledelayedexpansion
- PowerShell "$s=[IO.File]::ReadAllText('1.xml', [Text.Encoding]::UTF8) -replace ''', '''' -replace '>(?!\r\n)', "">`r`n""";sc 8.xml $s -Enc UTF8"
复制代码
再次感谢你的帮助
作者: WHY 时间: 2019-6-28 16:14
回复 3# smss
双引号就是这样转义的,有什么问题?
这样写的话,首先需要考虑 PowerShell 引号字符转义,还要考虑批处理特殊字符的转义。
字符的转义不可能一慨而论,需要具体问题具体分析。
开启变量延迟后,感叹号需要转义:
PowerShell "... -replace '>(?^!\r\n)', \"^>`r`n\"; sc 8.xml $s -Enc UTF8"
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |