所以我想从一个string中提取value,value将放在我的特定字符的右边,在这个例子中,我的特定字符是-,将放在右边。string看起来像这样:
string
value
-
TEST-QWE-1 TEST/QWE-22 TEST@QWE-3 TEST-QWE-ASD-4
字符串我想从这个string中提取
1 22 3 4
型我如何在C#中做到这一点?提前感谢
dgiusagp1#
mystring.Substring(mystring.IndexOf("-") + 1)
字符串如果在最后一个部分之前有其他破折号,则使用LastIndexOf:
LastIndexOf
mystring.Substring(mystring.LastIndexOf("-") + 1)
型Substring:https://learn.microsoft.com/en-us/dotnet/api/system.string.substring?view=netframework-4.7.2LastIndexOf:https://learn.microsoft.com/en-us/dotnet/api/system.string.lastindexof?view=netframework-4.7.2
Substring
ifmq2ha22#
我建议你学习正则表达式的字符串处理。在你的例子中,一个简单的正则表达式模式,如[0-9]+$,将匹配你的数字。既然你说数字总是在字符串的右边,你也可以使用string.Split('-').Last()。如果你重视代码的可读性和可维护性,就使用这个。如果您关心性能和内存使用,特别是对于非常长的字符串,那么Substring()和LastIndexOf()可能是更有效的选择。在大多数情况下,性能差异可以忽略不计,您可以选择使代码更清晰和更易于理解的方法。
[0-9]+$
string.Split('-').Last()
Substring()
LastIndexOf()
e3bfsja23#
使用LastIndexOf获取“-”的最后一次出现
var p = str.LastIndexOf('-'); return p >= 0 && (p + 1 < str.Length) ? str.Substring(p + 1) : "";
字符串
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- => */
yx2lnoni5#
我将发布另一个正则表达式来捕获您想要的内容:-([^-]+)$它与已经发布的不同,因为它将捕获除连字符(-)和字符串结尾($表示字符串结尾)之间的连字符([^-]+)之外的所有内容。所需结果将存储在第一个杯装组中。代码片段:
-([^-]+)$
$
[^-]+
var s = "TEST-QWE-1"; var match = Regex.Match(s, "-([^-]+)$"); if (match.Success) Console.WriteLine(match.Groups[1]);
字符串Demo
dfty9e196#
你可以使用Regex,这是你需要的字符串。[^-]+$简单地循环你拥有的每一个字符串。
Regex
[^-]+$
var regex = new Regex(@"([^-]+$)"); regex.Matches(str);
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.
字符串所以,首先我们得到我们关心的字符的最后一个索引。其次,我们使用这个索引执行一个子串以得到我们想要的结果。
pftdvrlh8#
您可以使用简单的正则表达式,如(-\d+$)您也可以使用Split()并获取最后一个元素
(-\d+$)
Split()
"TEST-QWE-ASD-4".Split('-').Last();
8条答案
按热度按时间dgiusagp1#
字符串
如果在最后一个部分之前有其他破折号,则使用
LastIndexOf
:型
Substring
:https://learn.microsoft.com/en-us/dotnet/api/system.string.substring?view=netframework-4.7.2LastIndexOf
:https://learn.microsoft.com/en-us/dotnet/api/system.string.lastindexof?view=netframework-4.7.2ifmq2ha22#
我建议你学习正则表达式的字符串处理。在你的例子中,一个简单的正则表达式模式,如
[0-9]+$
,将匹配你的数字。既然你说数字总是在字符串的右边,你也可以使用
string.Split('-').Last()
。如果你重视代码的可读性和可维护性,就使用这个。如果您关心性能和内存使用,特别是对于非常长的字符串,那么
Substring()
和LastIndexOf()
可能是更有效的选择。在大多数情况下,性能差异可以忽略不计,您可以选择使代码更清晰和更易于理解的方法。
e3bfsja23#
使用LastIndexOf获取“-”的最后一次出现
字符串
svujldwt4#
你可以使用string.LastIndexOf()和string.Substring()来完成这个任务。当输入中没有出现特殊字符时要小心。
字符串
yx2lnoni5#
我将发布另一个正则表达式来捕获您想要的内容:
-([^-]+)$
它与已经发布的不同,因为它将捕获除连字符(
-
)和字符串结尾($
表示字符串结尾)之间的连字符([^-]+
)之外的所有内容。所需结果将存储在第一个杯装组中。
代码片段:
字符串
Demo
dfty9e196#
你可以使用
Regex
,这是你需要的字符串。[^-]+$
简单地循环你拥有的每一个字符串。
字符串
yiytaume7#
方法是像这样使用LastIndexOf方法:
字符串
所以,首先我们得到我们关心的字符的最后一个索引。其次,我们使用这个索引执行一个子串以得到我们想要的结果。
pftdvrlh8#
您可以使用简单的正则表达式,如
(-\d+$)
您也可以使用
Split()
并获取最后一个元素字符串