标题: [问题求助] PowerShell删除字符串中的浮点数中的字母f [打印本页]
作者: 5i365 时间: 2022-10-19 12:55 标题: PowerShell删除字符串中的浮点数中的字母f
本帖最后由 5i365 于 2022-10-19 16:21 编辑
把浮点数中的f字母删掉, 有如下规律:
A. 行内的浮点数, 其左右两边各有一个空格
B. 行尾的浮点数, 左边有一个空格, 右边是行尾
_______________________________________之前:
$para.Format.BeforeSpacing = 8.2f
$para.Format.AfterSpacing = 16.22f
$para.Format.LineSpacing = 136.6f
"abc 15.5f56"
$paragraph.Format.BeforeSpacing -eq 6f -and $paragraph.Format.AfterSpacing -eq 6.54f -and $paragraph.Format.LineSpacing -eq 12f
_______________________________________之后:
$para.Format.BeforeSpacing = 8.2
$para.Format.AfterSpacing = 16.22
$para.Format.LineSpacing = 136.6
"abc 15.5f56"
$paragraph.Format.BeforeSpacing -eq 6 -and $paragraph.Format.AfterSpacing -eq 6.54 -and $paragraph.Format.LineSpacing -eq 12
_______________________________________代码:
- $s= @'$para.Format.BeforeSpacing = 8.2f
- $para.Format.AfterSpacing = 16.22f
- $para.Format.LineSpacing = 136.6f
- "abc 15.5f56"
- $paragraph.Format.BeforeSpacing -eq 6f -and $paragraph.Format.AfterSpacing -eq 6.54f -and $paragraph.Format.LineSpacing -eq 12f
- '@
-
- #1 把浮点数中的f字母删掉, 有如下规律:
- # A. 行内的浮点数, 其左右两边各有一个空格
- # B. 行尾的浮点数, 左边有一个空格, 右边是行尾
复制代码
作者: pd1 时间: 2022-10-19 15:03
- $a='''$para.Format.BeforeSpacing = 8.2f
- $para.Format.AfterSpacing = 16.22f
- $para.Format.LineSpacing = 136.6f
- $paragraph.Format.BeforeSpacing -eq 6f -and $paragraph.Format.AfterSpacing -eq 6.54f -and $paragraph.Format.LineSpacing -eq 12f'''
-
- $a -creplace '( \d+\.?\d*?)f','$1'
复制代码
作者: 5i365 时间: 2022-10-19 15:25
回复 2# pd1
感谢大侠支招!加了一行例子, 第四行中不是浮点数,但是被处理了
另外, 处理后, 首尾各有个单引号
- $a = '''$para.Format.BeforeSpacing = 8.2f
- $para.Format.AfterSpacing = 16.22f
- $para.Format.LineSpacing = 136.6f
- "abc 15.5f56"
- $paragraph.Format.BeforeSpacing -eq 6f -and $paragraph.Format.AfterSpacing -eq 6.54f -and $paragraph.Format.LineSpacing -eq 12f'''
-
- $a -creplace '( \d+\.?\d*?)f', '$1'
复制代码
作者: pd1 时间: 2022-10-19 16:26
回复 3# 5i365 - [code]$a = '$para.Format.BeforeSpacing = 8.2f
- $para.Format.AfterSpacing = 16.22f
- $para.Format.LineSpacing = 136.6f
- "abc 15.5f56"
- $paragraph.Format.BeforeSpacing -eq 6f -and $paragraph.Format.AfterSpacing -eq 6.54f -and $paragraph.Format.LineSpacing -eq 12f'
- $a -creplace '( \d+\.?\d*?)f(\r\n)?(?![\w])','$1'
复制代码
[/code]
作者: 5i365 时间: 2022-10-19 16:38
回复 4# pd1
处理后, 前四行并成了一行
作者: pd1 时间: 2022-10-19 16:44
回复 5# 5i365
作者: 5i365 时间: 2022-10-19 16:50
回复 6# pd1
我在powershell ISE中试的
作者: pd1 时间: 2022-10-19 16:58
本帖最后由 pd1 于 2022-10-19 16:59 编辑
回复 7# 5i365
我也不是特别了解powershell
作者: 5i365 时间: 2022-10-19 17:04
回复 8# pd1
无论如何, 感谢您的帮助, 我改了一下, 将正则改为如下就可以了, 即删了 \r
'( \d+\.?\d*?)f(\n)?(?![\w])', '$1'
怎样同时适应两种情况呢, 等路过高手支招
作者: pd1 时间: 2022-10-19 17:23
查到原因了 powershell \r\n 要换成`r`n
作者: 5i365 时间: 2022-10-19 17:26
本帖最后由 5i365 于 2022-10-19 17:28 编辑
回复 10# pd1
大侠高明, 还真是, 那为啥把\r 删了也行呢
这里不是正则表达式吗? 正则中的转义是 \ 呢, ps中的转义是 `
我对这里不太懂, idwma 大侠 对正则非常精通
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |