如何从字符串名称中获取值?

时间:2011-12-23 11:08:22

标签: c# string

如何从“I”和“P”之间的文件名“I1P706.jpg”中获取值,所以在这种情况下它应该是“1”? 通常,该值的长度可以大于1 sumbol

6 个答案:

答案 0 :(得分:2)

获取I和P的索引,然后从索引(可能需要+ 1)开始获取I和P之间的字符数(即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); 

答案 1 :(得分: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);
}

答案 2 :(得分: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...
}

答案 3 :(得分:1)

var input = "I1P706.jpg";
var indexOfI = input.IndexOf("I");
var result = input.Substring(indexOfI + 1, input.IndexOf("P") - indexOfI - 1);

答案 4 :(得分: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);

答案 5 :(得分:-1)

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

在这种情况下,输出将为1P

您还可以使用slice功能

Slice(1,4)的{​​p> Peaceful将返回eac