Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell 如何获取端点为回车符和/或换行符的子字符串?_Powershell_C# - Fatal编程技术网

Powershell 如何获取端点为回车符和/或换行符的子字符串?

Powershell 如何获取端点为回车符和/或换行符的子字符串?,powershell,c#,Powershell,C#,如果我不知道我想要的东西的长度,但我知道它的结尾是一个CR/LF,那么我如何获取子字符串 我正在与服务器通信,试图提取一些信息。子字符串的起点定义良好,但终点可以是可变的。在其他脚本语言中,我希望会有一个find()命令,但在PowerShell中还没有找到。大多数文章和SE问题涉及获取内容、子字符串、和选择字符串,目的是替换CRLF,而不仅仅是查找它 我正在与之通信的设备具有类似telnet的命令结构。它以它的模型作为提示开始。您可以向它发出命令,它会做出响应。我正试图从中获取主机名。这就是终

如果我不知道我想要的东西的长度,但我知道它的结尾是一个CR/LF,那么我如何获取子字符串

我正在与服务器通信,试图提取一些信息。子字符串的起点定义良好,但终点可以是可变的。在其他脚本语言中,我希望会有一个
find()
命令,但在PowerShell中还没有找到。大多数文章和SE问题涉及
获取内容
子字符串
、和
选择字符串
,目的是替换CRLF,而不仅仅是查找它

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

TSS-752>hostname
Host Name: ThisIsMyHostname

TSS-752>
我想提取主机名。我遇到了
IndexOf()
,它的工作方式似乎与我正在寻找的find命令类似。“:”是一个很好的起点,然后我想将其截断到下一个CRLF

注意:我已经使我的代码工作到了我满意的程度,但是为了不再收到反对票(在撰写本文时为3票)或再次被禁止,我不会发布解决方案,也不会删除问题。这些都是这里的禁忌。考虑到从评论中获得更多信息的请求只会让我获得否决票,所以我想我只是被困在所谓的第22条军规中。

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

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

使用它计算
String.Substring()
length
参数参数:


您是否编写或尝试过任何特定的代码?还没有。我知道我需要使用
子字符串
,但我不知道如何计算它的终点。它需要整数,但没有任何匹配项。您有用例示例吗?如果你提供一个例子和你尝试过的东西,那么帮助会非常有用。如果您正在查找某个内容,但不知道从何处开始使用
.IndexOf()
(这可能就是您要查找的内容)将有助于找到起点。或者只是使用正则表达式,因为它更简单。伙计们,这就像教科书级的问题。。这就是为什么我们会做出这样的反应,因为这些类型的问题通常已经在其他地方得到了回答。在大多数情况下,子字符串并不关心字符串的长度。您从索引中提取,它将一直提取到字符串的末尾,除非您量化了一些字符。因为可以查询字符串长度,所以您会事先知道这是否是一个问题。这就是为什么我想看到一个您正试图实现的用例/示例,因为有很多方法可以实现这一点。如果有尾随的新行,又有什么关系呢?您可以使用
.Trim()
在之前或之后清除它?
PS C:\> "   `r`n".IndexOf("`r`n")
2
$String = "    This phrase starts at index 4 ends at some point`r`nand then there's more"

# Define the start index
$Offset = 4

# Find the index of the end marker
$CRLFIndex = $string.IndexOf("`r`n")

# Check that the end marker was actually found
if($CRLFIndex -eq -1){
    throw "CRLF not found in string"
}

# Calculate length based on end marker index - start index
$Length = $CRLFIndex - $Offset

# Generate substring
$Substring = $String.Substring($Offset,$Length)