c#获取字符串的第一个实例

时间:2012-01-10 11:12:54

标签: c# string split

我有一个带回车符的字符串,我使用以下分割将它们分开:

 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,所以它是动态的,位置可能会改变......

由于

7 个答案:

答案 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)