C# 如何在字符串值之间获取字符串值

C# 如何在字符串值之间获取字符串值,c#,winforms,C#,Winforms,“例如C#-值为-此处为值。” 我想从我尝试过的这个字符串值中获取值(这里是值),但是当字符串值中有两个(-)破折号并且无法获取值时,它会给我错误。我该怎么做呢?我已经试过了 String St = "The example is for C# - The value is -Default ID."; int pFrom = St.IndexOf(" - ") + "- ".Length;

“例如C#-值为-此处为值。” 我想从我尝试过的这个字符串值中获取值(这里是值),但是当字符串值中有两个(-)破折号并且无法获取值时,它会给我错误。我该怎么做呢?我已经试过了

        String St = "The example is for C# - The value is -Default ID.";

        int pFrom = St.IndexOf(" - ") + "-  ".Length;
        int pTo = St.LastIndexOf(" . ");
        String result = St.Substring(pFrom, pTo - pFrom);

当句子中只有一个(-)时,它可以正常工作。如何从字符串中获取值(默认ID)。

不需要两个索引,只需使用最后出现的“-”

尝试:

如果要删除结尾处的句点,可以执行以下操作:

String finalResult = result.Remove(result.Length - 1, 1);
您可以使用正则表达式模式
[^-]*$

示例

var input = "The example is for C# - The value is -Default ID.";
var match = Regex.Match(input, @"[^-]*$");
if (match.Success)
    Console.WriteLine(match.Value);
输出

Default ID.


解释

可视化

St.Substring(s.LastIndexOf(“-”)+1)
将返回“Default ID.”而不是“-Default ID.”可能是最后一个索引中也有“句号”的字符串。
Default ID.