如果我不知道我想要的东西的长度,我怎么处理子字符串,但我知道它的结尾是CR / LF?
我正在与尝试提取某些信息的服务器进行通信。子串的起点已明确定义,但终点可以是可变的。在其他脚本语言中,我希望有一个find()
命令,但我还没有在PowerShell中找到它。大多数文章和SE问题都是指Get-Content
,substring
和Select-String
,目的是替换CRLF,而不是仅仅找到它。
我正在与之通信的设备具有类似telnet的命令结构。它从它的模型开始作为提示。你可以给它命令,它会响应。我试图从中获取主机名。这就是终端中的提示,命令和响应:
TSS-752>hostname
Host Name: ThisIsMyHostname
TSS-752>
我想提取主机名。我遇到了IndexOf()
,它看起来像我正在寻找的查找命令。 ":"是一个很好的起点,然后我想将它截断到下一个CRLF。
注意:我让我的代码工作让我满意,但是为了不再收到downvotes(在撰写本文时为3)或再次被禁止,我不会发布解决方案,也不删除问题。这些都是禁忌。考虑到评论中有关更多信息的请求只能让我失意,所以我想我只是陷入了SO-Catch-22。
答案 0 :(得分:3)
您可能已经在c#中找到了前20个示例,概述了这种完全相同的方法,但这里有PowerShell示例
如果要查找CR / LF发生的索引,请使用String.IndexOf()
:
PS C:\> " `r`n".IndexOf("`r`n")
2
用它来计算length
的{{1}}参数参数:
String.Substring()