我有一些句子,我想用C#
中的Regex提取一些单词例如:
// 标准间1人从2014年3月18日至2014年3月19日
获得#34;标准房1人"在句子之外,从xxxx删除到xxxx
// 家庭之夜3/4 从2014年3月18日至2014年3月19日
获得"家庭之夜的房间"和3/4是房间里的人数,我想把4出来作为房间里的最大人数。
对于这两种情况,都会忽略from和to。
你能否建议我使用reg ex模式做这些事情(2例)?
非常感谢你,祝你有愉快的一天!
答案 0 :(得分:0)
如果你不坚持正则表达式:
string[] array1 = "Standard room 1 persons from 18/03/2014 to 19/03/2014".Split();
string[] array2 = "Family night room 3/4 from 18/03/2014 to 19/03/2014".Split();
string n = String.Join(" ", array1.TakeWhile(s => s != "from").ToArray());
string n2 = String.Join(" ", array2.TakeWhile(s => s != "from").ToArray());
Console.WriteLine(n); // Standard room 1 persons
Console.WriteLine(n2); // Family night room 3/4
答案 1 :(得分:0)
只需使用:
string s = "//Standard room 1 and 1/4 persons from 18/03/2014 to 19/03/2014";
string matchedStr = Regex.Match(s, ".*(?=from)(?=.*to)").Value;
Console.WriteLine(matchedStr);
string totalStr = Regex.Match(s, ".*(?=from)(?=.*to)").Value;
int total=Convert.ToInt32(Regex.Match(totalStr,@"(?<=\d/)\d").Value);
Console.WriteLine(total);
答案 2 :(得分:0)
示例代码:
string input = "Standard room 1 persons from 18/03/2014 to 19/03/2014"
string s = Regex.Match(input, "(.*)(?=from)").Value;
s = s.Trim();
// Get your maximum number
MatchCollection numbers = Regex.Matches(s, "[\d]");
int max = 0;
foreach (Match number in numbers)
{
int temp = int.Parse(number.Value);
if (max > temp)
max = temp;
}