C# 查找字符串中第一个字符(字母)的索引

C# 查找字符串中第一个字符(字母)的索引,c#,.net,string,C#,.net,String,我有一个思维障碍,似乎无法解决这个问题,当然这很容易 我有以下字符串:“5555S1” 字符串可以包含任意数量的数字,后跟字母(a-Z),再后跟数字。 我如何得到字母的索引,这样我就可以得到字母后面的所有内容 Ie:55S1 应该返回S1 干杯既然你没有说你用的是哪种语言,我就挑一个我想用-c回答的# String.Index有关更多信息,请参阅 为了更好地测量,它位于字符串中。indexOf一种方法是循环遍历字符串,直到找到一个字母 而(!isAlpha(s[i]) i++; 或者应该有办法。

我有一个思维障碍,似乎无法解决这个问题,当然这很容易

我有以下字符串:“5555S1”

字符串可以包含任意数量的数字,后跟字母(a-Z),再后跟数字。 我如何得到字母的索引,这样我就可以得到字母后面的所有内容

Ie:55S1 应该返回S1


干杯

既然你没有说你用的是哪种语言,我就挑一个我想用-c回答的#

String.Index
有关更多信息,请参阅


为了更好地测量,它位于
字符串中。indexOf

一种方法是循环遍历字符串,直到找到一个字母

而(!isAlpha(s[i]) i++;
或者应该有办法。

您还可以检查字符的整数表示形式是否为>=65&&这并不能回答您的问题,但它确实解决了您的问题。 (尽管您可以使用它来计算索引)

您的问题很适合正则表达式(regex)

这是我之前准备的一个:

    String code = "1234A0987";

    //timeout optional but needed for security (so bad guys dont overload your server)
    TimeSpan timeout = TimeSpan.FromMilliseconds(150);


   //Magic here:
   //Pattern == (Block of 1 or more numbers)(block of 1 or more not numbers)(Block of 1 or more numbers)                      
    String regexPattern = @"^(?<firstNum>\d+)(?<notNumber>\D+)(?<SecondNum>\d+)?";
    Regex r = new Regex(regexPattern, RegexOptions.None, timeout);

    Match m = r.Match(code);
    if (m.Success)//We got a match!
    {     
        Console.WriteLine ("SecondNumber: {0}",r.Match(code).Result("${SecondNum}"));
        Console.WriteLine("All data (formatted): {0}",r.Match(code).Result("${firstNum}-${notNumber}-${SecondNum}")); 

        Console.WriteLine("Offset length (not that you need it now): {0}", r.Match(code).Result("${firstNum}").Length); 

    }
关于这个例子的更多信息

你甚至可以算出那个指数是多少


Python还有isdigit()和isalpha()方法,如果您正在使用它。一个好的起点是阅读以下内容:不确定您认为String.Index将如何工作?对于String.Index,您需要提供您要查找的字符,在我的例子中,它可以是任何字母。您如何使用String.Index完成此操作?虽然这不是在C中,但逻辑将我推向了正确的方向ion所以设法用C写了一个函数,它满足了我的需要。谢谢
    String code = "1234A0987";

    //timeout optional but needed for security (so bad guys dont overload your server)
    TimeSpan timeout = TimeSpan.FromMilliseconds(150);


   //Magic here:
   //Pattern == (Block of 1 or more numbers)(block of 1 or more not numbers)(Block of 1 or more numbers)                      
    String regexPattern = @"^(?<firstNum>\d+)(?<notNumber>\D+)(?<SecondNum>\d+)?";
    Regex r = new Regex(regexPattern, RegexOptions.None, timeout);

    Match m = r.Match(code);
    if (m.Success)//We got a match!
    {     
        Console.WriteLine ("SecondNumber: {0}",r.Match(code).Result("${SecondNum}"));
        Console.WriteLine("All data (formatted): {0}",r.Match(code).Result("${firstNum}-${notNumber}-${SecondNum}")); 

        Console.WriteLine("Offset length (not that you need it now): {0}", r.Match(code).Result("${firstNum}").Length); 

    }
SecondNumber: 0987 
All data (formatted): 1234-A-0987 
Offset length (not that you need it now): 4