我有以下字符串:
http://www.powerwXXe.com/text1 123-456 text2 text3/
有人可以就如何获取text1,text2和text3的值并将它们放入字符串给我建议。我听说过正则表达式,但不知道如何使用它们。
答案 0 :(得分:5)
如果您知道该字符串的格式类似,则可以使用string.Split
,先使用/
,然后使用空格,而不是使用RegEx路线。从结果字符串数组中检索结果。
string[] slashes = myString.Split('/');
string[] textVals = slashes[3].Split(' ');
// at this point:
// textVals[0] = "text1"
// textVals[1] = "123-456"
// textVals[2] = "text2"
// textVals[3] = "text3"
答案 1 :(得分:0)
以下是C#中正则表达式入门的链接:Regular Expression Tutorial
由于信息在线,我不认为在这里写一个教程是合适的,所以请查看链接,如果您有特定问题,请告诉我。
答案 2 :(得分:0)
您可以使用string.Fromat("http://myurl.com/{0}{1}{2}", value1, textbox2.Text, textbox3.Text)
并以任何方式格式化网址,而不是使用正则表达式。如果您希望使用正则表达式路线,可以随时查看regexlib。
答案 3 :(得分:0)
正则表达式的使用依赖于您在字符串中看到的模式 - 您需要能够在使用正则表达式之前概括您正在寻找的字符串模式。
对于此范围的问题,如果您可以确定模式,您可能最好使用其他字符串解析方法,例如String.IndexOf和String.Split。
正则表达式是一个强大的工具,当然值得学习,但这里可能没有必要。
答案 4 :(得分:0)
根据您提供的示例,看起来text1,text2和text3是否用空格分隔?如果是这样,并且如果你总是知道他们将要进入的位置,你可能想要跳过正则表达式,只需使用.Split('')将字符串拆分成一个字符串数组,然后从那里获取相关的项目。像这样:
string foo = "http://www.powerwXXe.com/text1 123-456 text2 text3/"
string[] fooParts = foo.Split(' ');
string text1 = fooParts[0].Replace("http://www.powerwXXe.com/", "");
string text2 = fooParts[2];
string text3 = fooParts[3].Replace("/", "");
你想在尝试从中抓取任何东西之前对字符串[]执行边界检查,但这样可行。正则表达式对于字符串解析非常棒,但是当你需要做的事情很简单时,有时候当字符串类中的简单方法会这样做时会有点过分。
答案 5 :(得分:0)
这完全取决于您对要解析的字符串的了解程度。字符串来自哪里,你知道它的形成程度是多少?
根据您的示例字符串,您可以使用像
这样简单的东西string pattern = @"http://www.powerwXXe.com/(?<myGroup1>\S+)\s\S+\s(?<myGroup2>\S+)\s(?<myGroup3>\S+)/";
var reg = new System.Text.RegularExpressions.Regex(pattern);
string input = "http://www.powerwXXe.com/text1 123-456 text2 text3/";
System.Text.RegularExpressions.Match myMatch = reg.Match(input);
然后,caputerd字符串将分别包含在myMatch.Groups [“myGroup1”],[“myGroup2”],[“myGroup3”]中。
然而,假设您的字符串始终以http://www.powerwXXe.com/开头,将始终有三个组要捕获,并且这些组由空格分隔(这是一个非法的字符在url中,几乎在所有情况下都是如此转换为%20,这必须在模式中考虑。)
那么,你对你的弦有多少了解?并且,正如一些人已经说过的那样,你真的需要正则表达式吗?