私にはメンタルブロックがあり、これを理解することができないようです。確かに簡単です 0_o
次の文字列があります:「5555S1」
文字列には任意の数の数字を含めることができ、その後に文字 (A ~ Z) が続き、その後に再び数字が続きます。文字のインデックスを取得するにはどうすればよいですか。これにより、部分文字列を作成して、文字に続くすべてのものを取得できます
つまり: 5555S1 は S1 を返す必要があります
乾杯
文字の整数表現が >= 65 && <=90 であるかどうかを確認することもできます。
単純な Python:
test = '5555Z187456764587368457638'
for i in range(0,len(test)):
if test[i].isalpha():
break
print test[i:]
利回り: Z187456764587368457638
これはあなたの質問には答えませんが、問題は解決します。(ただし、インデックスを作成するために使用できます)
あなたの問題は正規表現 (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
この例の詳細については、こちらをご覧ください。
それで、そのインデックスが何であったかを理解することさえできます。
1 つの方法は、文字が見つかるまで文字列をループすることです。
while(! isAlpha(s[i]) i++; または何かが機能するはずです。
あなたが使用している言語を言わなかったことを考えると、答えたい言語を選択します - c#
String.Index
詳細については、 http://msdn.microsoft.com/en-us/library/system.string.indexof.aspxを参照してください。
ここでは適切な尺度として、Javaにあります string.indexOf