【发布时间】:2013-07-08 11:36:12
【问题描述】:
如何找到直到特定字符的子字符串?我想要的是找到类似于以下内容的子字符串:
172.20.9.93\randDir
如果“\”存在,我想要 IPAddress,或者换句话说,直到“\”为止的所有内容。 有没有办法用 substring 做到这一点,或者有更好的方法做到这一点?
【问题讨论】:
-
-1 表示没有研究。易于谷歌搜索。
如何找到直到特定字符的子字符串?我想要的是找到类似于以下内容的子字符串:
172.20.9.93\randDir
如果“\”存在,我想要 IPAddress,或者换句话说,直到“\”为止的所有内容。 有没有办法用 substring 做到这一点,或者有更好的方法做到这一点?
【问题讨论】:
如果“\”存在,我想要 IPAddress,或者换句话说,直到“\”为止的所有内容。
两种选择:
使用IndexOf查找第一个\的索引,然后使用Substring
int firstSlash = text.IndexOf('\\');
string ipAddress = firstSlash == -1 ? text : text.Substring(0, firstSlash);
\使用String.Split分割,然后取第一部分
string ipAddress = text.Split('\\')[0];
【讨论】:
str.substring(0,str.IndexOf('\\');
String.Split 方法,我是否还需要检查它是否失败,或者它是否只是将其拆分为基本上完全相同的预先存在的字符串?
尝试使用正则表达式匹配:
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);
【讨论】:
999.999.999.999\randDir 作为输入,您还想捕获(无效的)IP 地址吗?如果输入源实际上是记录真实 IP 地址,则可能不需要检查这一点,但在其他情况下,它仍然可以让您免于编写额外的验证代码。