查找以大写字母开头的最后一个子字符串

时间:2015-09-23 10:01:34

标签: c# .net substring

我有一个包含字符串的变量。我想找到从最后一个大写字母开始的子字符串,例如" Hig"下面:

string str = "AbcDefHig";

string substring = "Hig";

3 个答案:

答案 0 :(得分:6)

您可以使用Array.FindLastIndexChar.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())