2017-06-14 19 views
-2

文字列内の最初と最後の数字文字のみを見つける方法は?例えば文字列内の最初と最後の数値文字を見つける方法

:これは、文字列の書式設定のために使用さ14はなく、1234年または23

:列A = 1234検索結果。ファイルからロードされます。だから、唯一の正規表現

ロードされた正規表現のパーサ:私はC#のを知らない

Match resultMatch = new Regex(regex).Match(sourceString); 
     return resultMatch.Success ? resultMatch.Value : null; 
+1

最初はa [0]、最後は[a.Length - 1]です。 –

+1

Ok、[mcve]!私たちはいくつかの入力が必要です、基本的なロジックを示すための1つの例は、exemple入力ではありません。それから、あなたが試したことが必要です:コードはありますか?それはむしろ本当に単純か本当に不明だからです。 –

+0

シンプルなgoogle-search:リストの最初の要素を取得し、リストの最後の要素を取得します。 – HimBromBeere

答えて

1

はよくので、ここでいくつかのより以下の疑似コードです:

char first; 
char last; 

int i; 
for (i = 0; i < a.Length; i++) 
{ 
    if (a[i] matches "[A-Za-z0-9]") 
    { 
     first = a[i]; 
     break; 
    } 
} 

int j; 
for (j = a.Length - 1; j > i; j--) 
{ 
    if (a[j] matches "[A-Za-z0-9]") 
    { 
     last = a[j]; 
     break; 
    } 
} 

return first + last; 
0

が仮に「英数字」 0-9、az、AZを意味するので、この正規表現を使用して最初と最後の英数字:[0-9a-zA-Z]を見つけることができます。 「英数」はtrueを返すためにchar.IsLetterOrDigitの原因となる任意の文字を意味すると仮定すると

// I used "1234." to show that it won't match non-alphanumeric characters 
var matches = Regex.Matches("1234.", "[0-9a-zA-Z]"); 
var first = matches[0].Value; 
var last = matches[matches.Count - 1].Value; 

、あなたはこれを使用することができます。

var query = "1234.".Where(char.IsLetterOrDigit); 
var first = query.First(); 
var last = query.Last(); 

EDIT:あなたのコメントによると、あなただけの数字をしたいし、これを試してください:

var query = "1234.".Where(char.IsDigit); // you can also use IsNumber here, 
             // they produce slightly different results, 
             // choose the one that fits your needs 
var first = query.First(); 
var last = query.Last(); 
+0

入力が単数(aplhanumeric)の文字(例えば "a")の場合はどうなりますか? 'var first 'は' a 'になり、' var last'も' a 'になります。これは技術的には正解ですが、OPが望んでいるとは限りません。私はそれが例外をスローするか、常に2文字( "aa")(混乱の原因となる可能性がある)の文字列ではなく、単一の文字( "a")のみを持つ文字列を返すべきかどうかもわかりません。 –

関連する問題