0

私にはメンタルブロックがあり、これを理解することができないようです。確かに簡単です 0_o

次の文字列があります:「5555S1」

文字列には任意の数の数字を含めることができ、その後に文字 (A ~ Z) が続き、その後に再び数字が続きます。文字のインデックスを取得するにはどうすればよいですか。これにより、部分文字列を作成して、文字に続くすべてのものを取得できます

つまり: 5555S1 は S1 を返す必要があります

乾杯

4

4 に答える 4

1

文字の整数表現が >= 65 && <=90 であるかどうかを確認することもできます。

単純な Python:

test = '5555Z187456764587368457638'

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

print test[i:]

利回り: Z187456764587368457638

于 2013-10-24T04:03:50.973 に答える
0

これはあなたの質問には答えませんが、問題は解決します。(ただし、インデックスを作成するために使用できます)

あなたの問題は正規表現 (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); 

    }

出力:

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

この例の詳細については、こちらをご覧ください。

それで、そのインデックスが何であったかを理解することさえできます。

正規表現チートシート

于 2013-10-25T01:00:46.840 に答える
0

1 つの方法は、文字が見つかるまで文字列をループすることです。

while(! isAlpha(s[i]) i++; または何かが機能するはずです。

于 2013-10-24T04:02:13.220 に答える
0

あなたが使用している言語を言わなかったことを考えると、答えたい言語を選択します - c#

String.Index詳細については、 http://msdn.microsoft.com/en-us/library/system.string.indexof.aspxを参照してください。

ここでは適切な尺度として、Javaにあります string.indexOf

于 2013-10-24T04:01:43.277 に答える