从字符串中取出最后一个字符,将其存储到变量中,然后使用Regex C#将其删除

本文关键字:然后 Regex 删除 变量 存储 最后一个 字符 字符串 | 更新日期: 2023-09-27 18:14:37

我有一个字符串,如下所示(例如(:

   Testing stackoverflow 6
   Testing stackoverflow 67
   Testing stackoverflow 687
   Testing stackoverflow 6789

现在我知道了一个事实,每次字符串都会以一个数值结束。我需要去掉这个号码。。。它可以是一个介于1到5000之间的数字…我认为使用lambda表达式没有帮助,因为我无法真正确定这个数字有多大,所以我认为regex可能是解决这个问题的好方法,但如何解决呢?

编辑:

当我从regex中取出数字并像这样存储时:

int somevalue = Convert.ToInt32(whatever regex takes out);
// Now I have to remove the number from the string...

有人知道吗?

从字符串中取出最后一个字符,将其存储到变量中,然后使用Regex C#将其删除

var match = Regex.Match(myString, @"'d+$");
if(match != null) {
    long ret;
    long.TryParse(match.Groups[0].Value, out ret);
    myString = Regex.Replace(myString, @"'d+$", "");
}

只有当字符串末尾有一个数字时,正则表达式才匹配,并且将ret声明为long允许您涵盖ret比int.MaxValue长的情况。

int number = 0;
string test = "Testing stackoverflow 6789";
string[] testArr = test.Split(' ');
int.TryParse(testArr[testArr.Length - 1], out number);
//you have the value in the number variable.
string str = "Testing stackoverflow 6";
long value = 0;
bool b = long.TryParse(str.Split(' ').Last(), out value);

要根据Space进行拆分,请获取最后一个字符串并将其转换为long或int

使用正则表达式:

string pattern = @"^.+ ('d+)$";
string input = "Testing stackoverflow 6789";
var match = Regex.Match(input, pattern, RegexOptions.None, new TimeSpan(0, 0, 0, 0, 500));
int? output;
if (match != null)
{
    string groupValue = match.Groups[1].Value;
    output = Convert.ToInt32(groupValue); 
}