2011-12-23 11 views
-1

「I」と「P」の間に含まれるファイル名「I1P706.jpg」から値を取得するにはどうすればよいでしょうか?この場合、「1」にする必要がありますか? 一般に、この値の長さが1以上sumbol出力1Pあろうこの場合文字列名から値を取得するにはどうすればよいですか?

+0

は、それは常にその位置にあるのでしょうか? –

+0

string [1] ........... –

+0

何を試しましたか?それは1桁に過ぎませんか?常に 'I'と' P'の間?これらは常に文字列の先頭にありますか?結果としてどんなデータ型が必要ですか?文字列? Int?他に何か? – Oded

答えて

2

はIとPのインデックスを取得します戻りますすることができ、その後のカウントのために(1 +必要がある場合があります)iIndexで始まる部分文字列を取得しますIとPの間のchar(P - I)。

string myString = "I1P706.jpg" 
int iIndex = myString.IndexOf("I"); 
int pIndex = myString.IndexOf("P"); 

string betweenIAndP = myString.Substring(iIndex + 1, pIndex - iIndex - 1); 
+0

これらはC# –

+0

の文字列操作の良い方法ですなぜdownvotes? – ThePower

+2

すべての答えは、コメントを残すことなく誰かから落とされました。この答えは、所望の結果「1」しかし「I1」を返すことはない。 –

-1
string input = "I1P706.jpg"; 
// Get the characters by specifying the limits 
string sub = input.Substring(1,3); 

することができます。

また、あなたは slice機能 Peaceful

Slice(1,4)eac

+0

しかし、長さは1以上になる可能性があります。 – revolutionkpi

+3

@revolutionkpi - あなたはそれを言っていません。 – Oded

2

正規表現を使用します私はあなたが両方の数字をしたいと思います

var r = new Regex(@"I(\d+)P.*"); 
var match = r.Match(input, RegexOptions.IgnoreCase); 
if (match.Success) 
{ 
    int number = 0; // set a default value 
    int.TryParse(match.Groups[1].Value, out number); 
    Console.WriteLine(number); 
} 
1

を:

using System.Text.RegularExpressions; 

RegEx rx(@"I(\d+)P(\d+)\.jpg"); 

Match m = rx.Match("I1P706.jpg"); 

if(m.Success) 
{ 
    // m.Groups[1].Value contains the first number 
    // m.Groups[2].Value contains the second number 
} 
else 
{ 
    // not found... 
} 
1
var input = "I1P706.jpg"; 
var indexOfI = input.IndexOf("I"); 
var result = input.Substring(indexOfI + 1, input.IndexOf("P") - indexOfI - 1); 
0

この正規表現は無視して、あなただけI Pとの間のすべての文字を与えます場合。これにより、IとPの間の数を増やすことができます。

string fileName = "I1222222P706.jpg"; 

Regex r = new Regex(@"(?<=I)(.*?)(?=P)", 
     RegexOptions.Singleline | RegexOptions.IgnoreCase); 

var result = r.Split(fileName).GetValue(1); 
関連する問題