C# 如何找到特定字符的子字符串

C# 如何找到特定字符的子字符串,c#,substring,C#,Substring,如何找到特定字符的子字符串?我希望找到类似以下内容的子字符串: 172.20.9.93\randDir 我想要IPAddress,或者换句话说,所有内容直到\如果\存在。 有没有一种方法可以使用子字符串来实现这一点,或者有更好的方法来实现这一点 我想要IPAddress,或者换句话说,所有内容直到\如果\存在 两种选择: 使用IndexOf查找第一个\的索引,然后使用Substring 使用String.Split按\拆分,然后获取第一部分 string ipAddress = text.Sp

如何找到特定字符的子字符串?我希望找到类似以下内容的子字符串:

172.20.9.93\randDir
我想要IPAddress,或者换句话说,所有内容直到\如果\存在。 有没有一种方法可以使用子字符串来实现这一点,或者有更好的方法来实现这一点

我想要IPAddress,或者换句话说,所有内容直到\如果\存在

两种选择:

使用IndexOf查找第一个\的索引,然后使用Substring

使用String.Split按\拆分,然后获取第一部分

string ipAddress = text.Split('\\')[0];

尝试使用正则表达式匹配:

var input = @"172.20.9.93\rand";
var output = Regex.Match(input, @"\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b");
Console.WriteLine(output.Value);

所以它类似于str.substring0,str.IndexOf'\\'@user2568791:如果没有任何反斜杠,则该操作将失败。在我的编辑中看到代码。谢谢,我想我从来没有想过它会失败。如果使用String.Split方法,我是否还需要检查它是否失败,或者它只是将它拆分为基本相同的预先存在的字符串?@user2568791:如果你知道字符串不是空的,你就可以了。我不记得如果你在空字符串上调用Split会发生什么。-1表示没有研究。很容易googlable。与子字符串或拆分相比,这看起来非常复杂。我同意,但它的复杂性还在于IP地址的验证:如果您有999.999.999.999\randDir作为输入,是否仍要捕获无效的IP地址?如果输入源实际记录的是真实的IP地址,则可能不需要进行检查,但在其他情况下,它可以避免您编写额外的验证代码。它永远不会无效,因为我正在使用InterNetwork套接字从机器捕获IP地址
var input = @"172.20.9.93\rand";
var output = Regex.Match(input, @"\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b");
Console.WriteLine(output.Value);