在字符串中查找第一个Char(Letter)的索引

时间:2013-10-24 03:57:07

标签: c# .net string

我有一个心理障碍,似乎无法解决这个问题,确定它非常简单0_o

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

字符串可以包含任意数量的数字,后跟一个字母(A-Z),然后再输入数字。 我如何获得字母(S)的索引,以便我可以子字符串,以便在信件之后获取所有内容

是的:5555S1 应该返回S1

干杯

4 个答案:

答案 0 :(得分:1)

你还可以检查角色的整数表示是否是> = 65&& < = 90

简单的Python:

test = '5555Z187456764587368457638'

for i in range(0,len(test)):
    if test[i].isalpha():
            break

print test[i:]

收益率:Z187456764587368457638

答案 1 :(得分:0)

鉴于您没有说出您使用的语言我将选择我想要回答的语言 - c#

String.Index请参阅http://msdn.microsoft.com/en-us/library/system.string.indexof.aspx了解更多

这里有一个好的衡量标准,它位于java string.indexOf

答案 2 :(得分:0)

一种方法是循环播放字符串直到找到一个字母。

while(!isAlpha(c [i])i ++; 或某事应该有效。

答案 3 :(得分:0)

这不能解答您的问题,但确实可以解决您的问题。 (虽然你可以使用它来计算索引)

您的问题是正则表达式(正则表达式)的理想选择

这是我之前准备的:

    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

有关此示例的更多信息here

所以你去了,你甚至可以弄清楚那个指数是什么。

Regex cheat sheet