我有一个字符串“第1页,共15页”。
我需要得到值15,因为这个值可以是1到100之间的任何数字。我想弄明白:
如果正则表达式最适合此处。考虑字符串永远不会改变也许只是用空格分割字符串?或者更好的解决方案。
如何使用正则表达式获取值。
答案 0 :(得分:4)
您可以使用正则表达式:Page \d+ of (\d+)
Regex re = new Regex(@"Page \d+ of (\d+)");
string input = "Page 1 of 15";
Match match = re.Match(input);
string pages = match.Groups[1].Value;
表达式分析:在(
和)
之间捕获一个组。 \d
代表数字,+
代表一位或多位数字。请注意,确切地说很重要,因此也要复制空格。
代码有点冗长,但我认为这样可以更好理解。通过拆分,您只需要:var pages = input.Split(' ')[3];
,看起来更容易,但容易出错。正则表达式很容易扩展到一次抓住字符串的其他部分。
答案 1 :(得分:3)
var myString = "Page 1 of 15";
var number = myString.SubString(myString.LastIndexOf(' ') + 1);
如果字符串末尾有空格的风险,则应用TrimEnd方法:
var number = myString.SubString(myString.TrimEnd().LastIndexOf(' ') + 1);
答案 2 :(得分:2)
我认为一个简单的String.Replace()
是最简单,最易读的解决方案。
string myString = "Page 1 of 15";
string pageNumber = myString.Replace("Page 1 of ", "");
修改强>
上述解决方案假定字符串永远不会是Page 2 of 15
。如果第一个页码可以更改,则需要使用String.Split()
代替。
string myString = "Page 1 of 15";
string pageNumber = myString.Split(new string[] {"of"},
StringSplitOptions.None).Last().Trim();
答案 3 :(得分:1)
如果字符串格式永远不会改变,那么你可以尝试这个......
string input = "Page 1 of 15";
string[] splits = input.Split(' ');
int totalPages = int.Parse(splits[splits.Length - 1]);
答案 4 :(得分:1)
如果这是你必须处理的唯一情况,只需用空格分割字符串并使用解析第4部分的整数。这样的东西会起作用:
string input = "Page 1 of 15";
string[] splitInput = string.Split(' ');
int numberOfPages = int.Parse(splitInput[3]);
答案 5 :(得分:0)
在c#中它应该是这样的(使用Regex
类):
Regex r = new Regex(@"Page \d+ of (\d+)");
var str = "Page 1 of 15";
var mathes = r.Matches(str);
您的回复将在:mathes[0].Groups[1]
答案 6 :(得分:0)
你不需要正则表达式。只是最后一个空格的索引 string var =“1 of 100”;
string secondvar = string.Empty;
int startindex = var.LastIndexOf(" ");
if (startindex > -1)
{
secondvar = var.Substring(startindex +1);
}