我正在使用" nslookup"从IP获取机器名称。
nslookup 1.2.3.4
输出是多行和机器名称的长度动态字符。我如何提取" DynamicLengthString"从所有输出。所有建议 IndexOf 和拆分,但当我尝试这样做时,我对我来说不是一个好的解决方案。有什么建议吗?
Server: volvo.toyota.opel.tata
Address: 5.6.7.8
Name: DynamicLengthString.toyota.opel.tata
Address: 1.2.3.4
答案 0 :(得分:1)
我没有正则表达式,这就是goold old c#way。
string input = @"Server: volvo.toyota.opel.tata
Address: 5.6.7.8
Name: DynamicLengtdfdfhString.toyota.opel.tata
Address: 1.2.3.4";
string targetLineStart = "Name:";
string[] allLines = input.Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);
string targetLine = String.Empty;
foreach (string line in allLines)
if (line.StartsWith(targetLineStart))
{
targetLine = line;
}
System.Console.WriteLine(targetLine);
string dynamicLengthString = targetLine.Remove(0, targetLineStart.Length).Split('.')[0].Trim();
System.Console.WriteLine("<<" + dynamicLengthString + ">>");
System.Console.ReadKey();
这提取&#34; DynamicLengtdfdfhString&#34;从给定的输入,无论名称线在哪里,无论后来发生什么。 这是测试和控制台的控制台版本。验证它。
答案 1 :(得分:0)
您可以使用Regex
using System;
using System.Text.RegularExpressions;
public class Program
{
public static void Main()
{
string Content = "Server: volvo.toyota.opel.tata \rAddress: 5.6.7.8 \rName: DynamicLengthString.toyota.opel.tata \rAddress: 1.2.3.4";
string Pattern = "(?<=DynamicLengthString)(?s)(.*$)";
//string Pattern = @"/^Dy*$/";
MatchCollection matchList = Regex.Matches(Content, Pattern);
Console.WriteLine("Running");
foreach(Match match in matchList)
{
Console.WriteLine(match.Value);
}
}
}
答案 2 :(得分:0)
我会假设你的输出与你说的完全一样。
//bootstrap styling for errors
$.validator.setDefaults({
highlight: function (element) {
$(element).closest('.form-group').addClass('has-error');
},
errorElement: 'span',
errorClass: 'help-block',
errorPlacement: function (error, element) {
if (element.parent('.input-group').length) {
error.insertAfter(element.parent());
} else {
error.insertAfter(element);
}
}
});
请注意,这是一个准系统示例:
string output = ExactlyAsInTheQuestion();
var fourthLine = output.Split(Environment.NewLine)[3];
var nameValue = fourthLine.Substring(9); //skips over "Name: "
var firstPartBeforePeriod = nameValue.Split('.')[0];
//firstPartBeforePeriod should equal "DynamicLengthString"
。IndexOutOfRangeException
方法调整为Substring(9)
。注意:我发现您已解雇Substring(6)
:
所有建议IndexOf和Split,但当我尝试这样做时,我对我来说不是一个好的解决方案。
但仅根据此说明,我们无法确定问题是在让Split
工作,还是实际上无法用于您的情况。