自己写了个笨方法,拿出来丢一下人。。还是楼上大神的比较简单哈string str = "BTFTL_5322_18.C9.11.27.10.49.dat"; int i = str.IndexOf("5322_"); string strNew = str.Replace(".dat","").Substring(i).Replace("_", "").Replace(".", ""); Regex data = new Regex("^[0-9]$"); string strNew1 = str.Replace(".dat", "").Replace("_", "").Replace(".", ""); char[] c=strNew1.ToCharArray(); int num = 0; for (i = 0; i < c.Length; i++) { string s = c[i].ToString(); if (data.IsMatch(s) == false) { num++; } else { break; } } strNew1=strNew1.Substring(num); Console.WriteLine(strNew); Console.WriteLine(strNew1);
string s = " BTFTL_5322_18.C9.11.27.10.49.dat"; //替换掉_ s = s.Replace("_",""); //替换掉. s = s.Replace(".",""); //转换为charArray var charArray = s.ToArray(); //查找第一个数字出现的位置 int i; for (i=0; i < charArray.Count(); i++) { var value =charArray[i] ; if (value>=48&&value<=57) break; } //去掉尾 s = s.Substring(i, s.Length - i -3);做表单无思路,求
可支持多个字符串一起操作。var src = @"BTFTL_5322_18.C9.11.27.10.49.dat B_F_MR_5322_18.C9.11.07.03.40.dat"; var rgx = @"_(?<g1>\d{4})_(?:(?<g2>\w{2})\.)+"; var answer = from match in Regex.Matches(src, rgx).Cast<Match>() let groups = match.Groups.Cast<Group>().Skip(1) let captures = groups.Select(g => String.Join("", g.Captures.Cast<Capture>().Select(c => c.Value))) select String.Join("", captures);foreach (var a in answer) { Console.WriteLine(a); }
你举这两个例子,我们会认为是从5322_开始截取
string str="BTFTL_5322_18.C9.11.27.10.49.dat";
int i=str.IndexOf("5322_");
string strNew=str.Substring(i).replace("_","").replace(".","").TrimEnd(".dat");
string str = "BTFTL_5322_18.C9.11.27.10.49.dat";
string newStr = Regex.Replace(Regex.Match(str, @"\d.*\d").ToString(), @"_|\.","");
Console.WriteLine(newStr);
string s = GetString("BTFTL_5322_18.C9.11.27.10.49.dat"); public string GetString(string str)
{
return str.Trim().Remove(0, str.IndexOf("5322_")).TrimEnd(new char[] { '.', 'd', 'a', 't' }).Replace("_", "").Replace(".", "");
}s="532218C911271049";
int i = str.IndexOf("5322_");
string strNew = str.Replace(".dat","").Substring(i).Replace("_", "").Replace(".", "");
Regex data = new Regex("^[0-9]$");
string strNew1 = str.Replace(".dat", "").Replace("_", "").Replace(".", "");
char[] c=strNew1.ToCharArray();
int num = 0;
for (i = 0; i < c.Length; i++)
{
string s = c[i].ToString();
if (data.IsMatch(s) == false)
{
num++;
}
else
{
break;
}
}
strNew1=strNew1.Substring(num);
Console.WriteLine(strNew);
Console.WriteLine(strNew1);
string s = " BTFTL_5322_18.C9.11.27.10.49.dat";
//替换掉_
s = s.Replace("_","");
//替换掉.
s = s.Replace(".","");
//转换为charArray
var charArray = s.ToArray();
//查找第一个数字出现的位置
int i;
for (i=0; i < charArray.Count(); i++)
{
var value =charArray[i] ;
if (value>=48&&value<=57)
break;
}
//去掉尾
s = s.Substring(i, s.Length - i -3);做表单无思路,求
str = Regex.Replace(str, @"(?is)[a-z]+_|\.(dat)?|(?<=\d)_", "");
可支持多个字符串一起操作。var src = @"BTFTL_5322_18.C9.11.27.10.49.dat B_F_MR_5322_18.C9.11.07.03.40.dat";
var rgx = @"_(?<g1>\d{4})_(?:(?<g2>\w{2})\.)+";
var answer = from match in Regex.Matches(src, rgx).Cast<Match>()
let groups = match.Groups.Cast<Group>().Skip(1)
let captures = groups.Select(g => String.Join("", g.Captures.Cast<Capture>().Select(c => c.Value)))
select String.Join("", captures);foreach (var a in answer)
{
Console.WriteLine(a);
}