我有一个带回车符的字符串,我使用以下分割将它们分开:
string[] RemoveEmptySpace = result.Split(new string[] { "\n", "\r\n" }, StringSplitOptions.RemoveEmptyEntries);
所以它变成了这样:
Server: xxx
Address: xxx.xxx.11.10
Non-authoritative answer:
Name: test.com
Address: xxx.xxx.888.555
现在我的问题是我如何得到地址号的第一个实例而不是文本,例如'xxx.xxx.11.10'?字符串来自nslookup,所以它是动态的,位置可能会改变......
由于
答案 0 :(得分:2)
只需将字符串分成两部分(即,再次对创建的字符串应用Split(...)
函数)。
string[] add= arrayStr[1].Split(':');
Console.WriteLine("address" + add[1]); // TODO: verify syntax
答案 1 :(得分:2)
正则表达式是你的朋友。假设您的结果始终包含短语"Address: nnn.nnn.nnn.nnn"
,您只需执行以下操作:
Match m = Regex.Match(result, "Address\\:\\s*(\\d+(\\.\\d+)+)");
if (m.Success) {
string address = m.Groups[1]; // m.Groups[1] returns the dotted address part
}
您可以为数组中的每个元素执行匹配,但使用result
字符串可能更容易。
答案 2 :(得分:1)
您可以迭代从拆分中获得的字符串集合,并解析以“Address”开头的字符串。就像这样:
string[] RemoveEmptySpace = ...;
// ...
foreach (string line in RemoveEmptySpace)
{
if (line.StartsWith("Address:"))
{
string[] segments = line.Split(new char[1] { ':' }, StringSplitOptions.RemoveEmptyEntries);
// Use the second segment, as this should be the value
string value = segments[1].Trim();
// Note: You now have the string representation of the Address numbers.
// Stop searching for more addresses
break;
}
}
答案 3 :(得分:1)
完成拆分后,请执行以下操作:
var firstAddress =
(from line in RemoveEmptySpace
let split = line.Split(new[] { ':' })
where split[0] == "Address"
select split[1]).First();
(您可能需要在文件开头添加using System.Linq;
才能使其生效)
答案 4 :(得分:0)
迭代数组RemoveEmptySpace
检查当前索引处的字符串StartsWith'Address:'
如果是,请将其与:
拆分并在索引[1]
break
迭代。
答案 5 :(得分:0)
除分割方法外,您还可以使用正则表达式:
Regex addrParser = new Regex(@"Address:\s+([\d\.]+)", RegexOptions.Multiline);
string address = null;
if (addrParser.IsMatch(result)) {
address = addrParser.Match(result).Groups[1].Value;
}
这可以按预期工作:
r = new Regex(@"Address:\s+([\d\.]+)", RegexOptions.Multiline);
r.IsMatch("Address: 123.456.888.555"); // true
查看备忘单是有用的:http://www.mikesdotnetting.com/Article/46/CSharp-Regular-Expressions-Cheat-Sheet
答案 6 :(得分:0)
使用此功能:
static String getAddress(String[] Haystack)
{
foreach(String line in Haystack)
{
if(line.Substring(0, 8) == "Address:")
return line.Substring(10);
}
return "";
}
您可以这样称呼它:
getAddress(RemoveEmptySpace)