在C#中某些特定字符之后获取价值

时间:2019-03-01 07:42:30

标签: c# regex string

因此,我想从value中提取stringvalue将放置在我的特定字符之后的右侧,在这种情况下,我的特定字符是-并将放在右边。

string如下所示:

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

我要从那string中提取

1
22
3
4

我如何在C#中做到这一点?预先感谢

8 个答案:

答案 0 :(得分:4)

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

或使用LastIndexOf,以防最后一部分前还有其他破折号:

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

  

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

     

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

答案 1 :(得分:3)

我建议您学习用于字符串处理的Regex。 在您的情况下,像ConstraintLayout这样的简单Regex模式将与您的数字匹配。

由于您指出数字始终在字符串的右侧,因此您也可以使用[0-9]+$

答案 2 :(得分:1)

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

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

答案 3 :(得分:1)

您可以使用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- =>
*/

答案 4 :(得分:1)

我将发布另一个正则表达式来捕获您想要的内容:-([^-]+)$

它与已经发布的有所不同,因为它将捕获连字符([^-]+)和字符串末尾(-表示字符串末尾)之间的所有字符,除了连字符(带有$)。

所需结果将存储在第一个计算组中。

代码段:

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

Demo

答案 5 :(得分:0)

您可以使用Regex,这是您需要的字符串。 [^-]+$

只需遍历您拥有的每个字符串。

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

regex.Matches(str);

答案 6 :(得分:0)

您可以使用简单的正则表达式,例如(-\d+$)

您也可以使用Split()并获取最后一个元素

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

答案 7 :(得分:0)

可行的方法是使用这样的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.

因此,首先我们得到我们关心的字符的最后一个索引。 其次,我们使用该索引执行子字符串以获得所需的结果