regex 在C#中的某些特定字符后获取值

ht4b089n  于 2023-11-20  发布在  C#
关注(0)|答案(8)|浏览(210)

所以我想从一个string中提取valuevalue将放在我的特定字符的右边,在这个例子中,我的特定字符是-,将放在右边。
string看起来像这样:

TEST-QWE-1
TEST/QWE-22
TEST@QWE-3
TEST-QWE-ASD-4

字符串
我想从这个string中提取

1
22
3
4


我如何在C#中做到这一点?提前感谢

dgiusagp

dgiusagp1#

mystring.Substring(mystring.IndexOf("-") + 1)

字符串
如果在最后一个部分之前有其他破折号,则使用LastIndexOf

mystring.Substring(mystring.LastIndexOf("-") + 1)


Substringhttps://learn.microsoft.com/en-us/dotnet/api/system.string.substring?view=netframework-4.7.2
LastIndexOfhttps://learn.microsoft.com/en-us/dotnet/api/system.string.lastindexof?view=netframework-4.7.2

ifmq2ha2

ifmq2ha22#

我建议你学习正则表达式的字符串处理。在你的例子中,一个简单的正则表达式模式,如[0-9]+$,将匹配你的数字。
既然你说数字总是在字符串的右边,你也可以使用string.Split('-').Last()。如果你重视代码的可读性和可维护性,就使用这个。
如果您关心性能和内存使用,特别是对于非常长的字符串,那么Substring()LastIndexOf()可能是更有效的选择。
在大多数情况下,性能差异可以忽略不计,您可以选择使代码更清晰和更易于理解的方法。

e3bfsja2

e3bfsja23#

使用LastIndexOf获取“-”的最后一次出现

var p = str.LastIndexOf('-');
return p >= 0 && (p + 1 < str.Length) ? str.Substring(p + 1) : "";

字符串

svujldwt

svujldwt4#

你可以使用string.LastIndexOf()和string.Substring()来完成这个任务。当输入中没有出现特殊字符时要小心。

string[] inputs = new string[]{ 
    "TEST-QWE-1", 
    "TEST/QWE-22",
    "TEST@QWE-3", 
    "TEST-QWE-ASD-4", 
    "TEST-QWE-ASD-4", 
    "TEST",
    "TEST-"
};
foreach(string input in inputs){
    int lastIdx = input.LastIndexOf("-");
    string output = lastIdx > -1 ? input.Substring(lastIdx + 1) : "";
    Console.WriteLine(input + " => " + output);
}
/* console outputs:
TEST-QWE-1 => 1
TEST/QWE-22 => 22
TEST@QWE-3 => 3
TEST-QWE-ASD-4 => 4
TEST-QWE-ASD-4 => 4
TEST =>
TEST- =>
*/

字符串

yx2lnoni

yx2lnoni5#

我将发布另一个正则表达式来捕获您想要的内容:-([^-]+)$
它与已经发布的不同,因为它将捕获除连字符(-)和字符串结尾($表示字符串结尾)之间的连字符([^-]+)之外的所有内容。
所需结果将存储在第一个杯装组中。
代码片段:

var s = "TEST-QWE-1";
var match = Regex.Match(s, "-([^-]+)$");
if (match.Success)
  Console.WriteLine(match.Groups[1]);

字符串
Demo

dfty9e19

dfty9e196#

你可以使用Regex,这是你需要的字符串。[^-]+$
简单地循环你拥有的每一个字符串。

var regex = new Regex(@"([^-]+$)");

regex.Matches(str);

字符串

yiytaume

yiytaume7#

方法是像这样使用LastIndexOf方法:

string input = "TEST-QWE-1";
var lastIndex = input.LastIndexOf("-");
var id = input.Substring(lastIndex + 1); // this is so you don't get the minus as well if you don't want it.

字符串
所以,首先我们得到我们关心的字符的最后一个索引。其次,我们使用这个索引执行一个子串以得到我们想要的结果。

pftdvrlh

pftdvrlh8#

您可以使用简单的正则表达式,如(-\d+$)
您也可以使用Split()并获取最后一个元素

"TEST-QWE-ASD-4".Split('-').Last();

字符串

相关问题