如何获取一个子串,端点是回车和/或换行?

时间:2017-07-21 14:51:17

标签: powershell

如果我不知道我想要的东西的长度,我怎么处理子字符串,但我知道它的结尾是CR / LF?

我正在与尝试提取某些信息的服务器进行通信。子串的起点已明确定义,但终点​​可以是可变的。在其他脚本语言中,我希望有一个find()命令,但我还没有在PowerShell中找到它。大多数文章和SE问题都是指Get-ContentsubstringSelect-String,目的是替换CRLF,而不是仅仅找到它。

我正在与之通信的设备具有类似telnet的命令结构。它从它的模型开始作为提示。你可以给它命令,它会响应。我试图从中获取主机名。这就是终端中的提示,命令和响应:

TSS-752>hostname
Host Name: ThisIsMyHostname

TSS-752>

我想提取主机名。我遇到了IndexOf(),它看起来像我正在寻找的查找命令。 ":"是一个很好的起点,然后我想将它截断到下一个CRLF。

注意:我让我的代码工作让我满意,但是为了不再收到downvotes(在撰写本文时为3)或再次被禁止,我不会发布解决方案,也不删除问题。这些都是禁忌。考虑到评论中有关更多信息的请求只能让我失意,所以我想我只是陷入了SO-Catch-22。

1 个答案:

答案 0 :(得分:3)

您可能已经在中找到了前20个示例,概述了这种完全相同的方法,但这里有PowerShell示例

如果要查找CR / LF发生的索引,请使用String.IndexOf()

PS C:\> "   `r`n".IndexOf("`r`n")
2

用它来计算length的{​​{1}}参数参数:

String.Substring()