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

nzrxty8p  于 2023-01-14  发布在  C#
关注(0)|答案(4)|浏览(117)

我有一个字符串如下(例如):

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...

有人知道吗?

ttcibm8c

ttcibm8c1#

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的情况

6za6bjd0

6za6bjd02#

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.
ojsjcaue

ojsjcaue3#

string str = "Testing stackoverflow 6";
long value = 0;
bool b = long.TryParse(str.Split(' ').Last(), out value);

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

fgw7neuy

fgw7neuy4#

使用正则表达式:

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); 
}

相关问题