【发布时间】:2019-03-14 15:07:18
【问题描述】:
脚本来处理网络故事中的一些专有名称,以帮助我的阅读工具正确发音。
我通过
获取网页内容$webpage = (Invoke-WebRequest -URI 'https://wanderinginn.com/2018/03/20/4-20-e/').Content
这个 $webpage 应该是字符串类型。
现在
$webpage.IndexOf('<div class="entry-content">')
返回正确的值,但
$webpage.IndexOf("Previous Chapter")
返回意外的值,我需要解释一下为什么或如何自己找到错误。
理论上它应该剪切页面的“正文”,通过我要替换的专有名词列表运行它并将其推送到 htm 文件中。 一切正常,但 IndexOf("Prev...") 的值不起作用。
编辑: 在调用 webrequest 之后我可以
Set-Clipboard $webrequest
并在记事本++中发布此内容,在那里我可以找到'div class="entry-content"'和'Previous Chapter'。 如果我做类似的事情
Set-Clipboard $webpage.substring(
$webpage.IndexOf('<div class="entry-content">'),
$webpage.IndexOf('PreviousChapter')
)
我希望 Powershell 能够正确确定这些字符串的两个第一个实例并在它们之间进行切换。因此我的剪贴板现在应该有我想要的内容,但字符串比第一次出现的更远。
【问题讨论】:
-
你得到了什么意想不到的价值?您期望的价值是什么?为什么?
-
这对我很有效
(Invoke-WebRequest -URI 'https://wanderinginn.com/2018/03/20/4-20-e/').Content.indexof('Previous Chapter')得到了我 87859。这有什么问题?您希望行号与字符号一样吗? -
IndexOf()只返回所请求字符串的整数索引。您需要使用该信息来切出您需要的内容。 -
.SubString()方法单独使用StartIndex或StartIndex, Length`。你给它两个起始索引号。 ///// 您需要将第二个数字设置为两个索引值之间的差异。 [咧嘴] -
天哪,我是个笨蛋。谢谢!我想我让自己更难了,因为 notepad++ 的 find 总是显示与 powershell 不同的字符数。
标签: html powershell substring string-parsing