找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 16683|回复: 10

[问题求助] PowerShell删除字符串中的浮点数中的字母f

[复制链接]
发表于 2022-10-19 12:55:08 | 显示全部楼层 |阅读模式
本帖最后由 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



_______________________________________代码:

  1. $s= @'$para.Format.BeforeSpacing = 8.2f
  2. $para.Format.AfterSpacing = 16.22f
  3. $para.Format.LineSpacing = 136.6f
  4. "abc 15.5f56"
  5. $paragraph.Format.BeforeSpacing -eq 6f -and $paragraph.Format.AfterSpacing -eq 6.54f -and $paragraph.Format.LineSpacing -eq 12f
  6. '@

  7. #1 把浮点数中的f字母删掉, 有如下规律:
  8. # A. 行内的浮点数, 其左右两边各有一个空格
  9. # B. 行尾的浮点数, 左边有一个空格, 右边是行尾
复制代码
发表于 2022-10-19 15:03:28 | 显示全部楼层
  1. $a='''$para.Format.BeforeSpacing = 8.2f
  2. $para.Format.AfterSpacing = 16.22f
  3. $para.Format.LineSpacing = 136.6f
  4. $paragraph.Format.BeforeSpacing -eq 6f -and $paragraph.Format.AfterSpacing -eq 6.54f -and $paragraph.Format.LineSpacing -eq 12f'''

  5. $a -creplace '( \d+\.?\d*?)f','$1'
复制代码
 楼主| 发表于 2022-10-19 15:25:26 | 显示全部楼层
回复 2# pd1


感谢大侠支招!加了一行例子, 第四行中不是浮点数,但是被处理了
另外, 处理后, 首尾各有个单引号

  1. $a = '''$para.Format.BeforeSpacing = 8.2f
  2. $para.Format.AfterSpacing = 16.22f
  3. $para.Format.LineSpacing = 136.6f
  4. "abc 15.5f56"
  5. $paragraph.Format.BeforeSpacing -eq 6f -and $paragraph.Format.AfterSpacing -eq 6.54f -and $paragraph.Format.LineSpacing -eq 12f'''

  6. $a -creplace '( \d+\.?\d*?)f', '$1'
复制代码
发表于 2022-10-19 16:26:40 | 显示全部楼层
回复 3# 5i365
  1. [code]$a = '$para.Format.BeforeSpacing = 8.2f
  2. $para.Format.AfterSpacing = 16.22f
  3. $para.Format.LineSpacing = 136.6f
  4. "abc 15.5f56"
  5. $paragraph.Format.BeforeSpacing -eq 6f -and $paragraph.Format.AfterSpacing -eq 6.54f -and $paragraph.Format.LineSpacing -eq 12f'
  6. $a -creplace '( \d+\.?\d*?)f(\r\n)?(?![\w])','$1'
复制代码
[/code]

评分

参与人数 1技术 +1 收起 理由
5i365 + 1 乐于助人

查看全部评分

 楼主| 发表于 2022-10-19 16:38:10 | 显示全部楼层
回复 4# pd1


   处理后, 前四行并成了一行
发表于 2022-10-19 16:44:32 | 显示全部楼层
回复 5# 5i365
 楼主| 发表于 2022-10-19 16:50:46 | 显示全部楼层
回复 6# pd1


   我在powershell ISE中试的
发表于 2022-10-19 16:58:20 | 显示全部楼层
本帖最后由 pd1 于 2022-10-19 16:59 编辑

回复 7# 5i365


    我也不是特别了解powershell
 楼主| 发表于 2022-10-19 17:04:07 | 显示全部楼层
回复 8# pd1

无论如何, 感谢您的帮助, 我改了一下, 将正则改为如下就可以了, 即删了 \r
'( \d+\.?\d*?)f(\n)?(?![\w])', '$1'
怎样同时适应两种情况呢, 等路过高手支招
发表于 2022-10-19 17:23:52 | 显示全部楼层
查到原因了  powershell  \r\n  要换成`r`n
 楼主| 发表于 2022-10-19 17:26:19 | 显示全部楼层
本帖最后由 5i365 于 2022-10-19 17:28 编辑

回复 10# pd1

大侠高明, 还真是, 那为啥把\r 删了也行呢
这里不是正则表达式吗? 正则中的转义是 \ 呢, ps中的转义是 `  

我对这里不太懂, idwma 大侠 对正则非常精通
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 02:30 , Processed in 0.021272 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表