powershell - 在 Powershell Substring(0, IndexOf) 中不匹配时返回整个字符串
问题描述
我有一些适用于 Outlook 文件夹中邮件的 Powershell。大多数电子邮件都有一个以 text 开头的页脚"------"
。我想在这个字符串之后转储所有文本。
我添加了一个表达式,Select-Object
如下所示:
$cleanser = {($_.Body).Substring(0, ($_.Body).IndexOf("------"))}
$someObj | Select-Object -Property @{ Name = 'Body'; Expression = $cleanser}
这在IndexOf()
返回匹配时有效......但是当我的Select-Object
输出不匹配时null
。
返回时如何更新我的表达式以返回原始IndexOf
字符串null
?
解决方案
我同意@mklement0 和@PetSerAl 正则表达式给出了最好的答案。耶!正则表达式来拯救!
编辑:修复我原来的帖子。
遵循@Adam 在表达式中使用脚本块的想法,您只需在脚本块中添加更多逻辑以在使用之前先检查索引:
$cleanser = {
$index = ($_.Body).IndexOf("------");
if($index -eq -1){
$index = $_.Body.Length
};
($_.Body).Substring(0, $index)
}
$someObj | Select-Object -Property @{ Name = 'Body'; Expression = $cleanser}
推荐阅读
- python - 找出日期是周末还是工作日
- symfony - 教义迁移不尊重实体
- mysql - 使用 NULL 对多个文本列进行排序
- flutter - Flutter 推出新的独立屏幕
- javascript - 如何在纯 JavaScript 中以最快的方式检查字符串的最后一个字符是否是数字/数字?
- python - 我需要使用“skpy”python 库自动在 Skype 组中发布 Skype 附件
- c# - 选项模式 - 接口/抽象属性
- windows - 删除与我的 windows 分区重叠的 LVM 分区
- node.js - 节点以 nodemon 开头
- html - 如何制作一个灵活的块,使其具有与灵活的照片相同的宽度和高度,并将位于照片的顶部?