簡體   English   中英

在C#中某些特定字符之后獲取價值

[英]Get value after some specific character in C#

因此,我想從string提取value ,該value將放置在我的特定字符之后的右側,在這種情況下,我的特定字符是-並將放置在右側。

string將如下所示:

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

然后從該string中提取

1
22
3
4

我如何在C#中做到這一點? 提前致謝

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

或使用LastIndexOf ,以防最后一部分之前還有其他破折號:

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

Substringhttps : Substring ? Substring = Substring

LastIndexOfhttps : LastIndexOf ? LastIndexOf = LastIndexOf

我建議您學習有關用於字符串處理的正則表達式。 在您的情況下,簡單的正則表達式模式(例如[0-9]+$將與您的數字匹配。

由於您聲明數字始終在字符串的右側,因此您也可以使用string.Split('-').Last()

使用LastIndexOf獲取最后出現的“-”

var p = str.LastIndexOf('-');
return p >= 0 && (p + 1 < str.Length) ? str.Substring(p + 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- =>
*/

我將發布另一個正則表達式來捕獲您想要的內容: -([^-]+)$

它與已經發布的有所不同,因為它將捕獲連字符( - )和字符串結尾( $表示字符串結尾)之間除連字符(帶有[^-]+ )之外的所有內容。

期望的結果將存儲在第一個組合組中。

程式碼片段:

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

演示版

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

只需遍歷您擁有的每個字符串。

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

regex.Matches(str);

您可以使用簡單的正則表達式,例如(-\\d+$)

您也可以使用Split()並獲取最后一個元素

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

可以使用如下方法使用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.

因此,首先我們得到我們關心的字符的最后一個索引。 其次,我們使用該索引執行子字符串以獲得所需的結果

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM