我有一个包含字符串的变量。我想找到从最后一个大写字母开始的子字符串,例如" Hig"下面:
string str = "AbcDefHig";
string substring = "Hig";
答案 0 :(得分:6)
您可以使用Array.FindLastIndex
和Char.IsUpper
来获取索引:
string str = "AbcDefHig";
int lastCapital = Array.FindLastIndex<char>(str.ToCharArray(), Char.IsUpper);
string result = null;
if (lastCapital >= 0)
result = str.Substring(lastCapital); // Hig
答案 1 :(得分:1)
static void Main(string[] args)
{
string word = "AbcdefHig";
try
{
Console.Write(word.Substring(LastCapital(word)));
}
catch(Exception e)
{
Console.Write("no capital letter");
}
}
private static int LastCapital(string word)
{
for(int i = word.Length - 1; i >= 0; i--)
{
if (Char.IsUpper(word[i]))
{
return i;
}
}
return -1;
}
答案 2 :(得分:0)
您可以通过以下方法找到所有大写索引:
来源:Find Index of the First Uppercase character
var result = (from ch in spam.ToArray() where Char.IsUpper(ch) select spam.IndexOf(ch))
如果你对字符串运行,请说
"string spam = "abcdeFgihjklmnopQrstuv";"
结果将是:5,16。
因此,通过从列表中获取最后一个索引 - 即上面的示例为16,那么您可以str.Substring(result.Last())