C# 字符串截取算法
如题:string str1="app\\aa\\bb\\cc.dll";
string str2="app\\bb\\ee.exe";
string str3="app\\cc.bat";
求一个算法,我传入不同的string值,都可以获得这样的结果:
如果是strl,用集合添加的应该是:list.add("app","aa","bb");
一下类似...... --------------------编程问答-------------------- 第一步操作:
str1.split("\\");
如果有小数点的情况,进行第二步操作:
str.split(".");
取小数点左边的数据 --------------------编程问答--------------------
--------------------编程问答-------------------- 如果固定这种形式的话,只要去掉最后 \\ 的字符串,前面按\\分隔即可 --------------------编程问答-------------------- 用正则表达式灵活性更高。 --------------------编程问答-------------------- 正则表达式 --------------------编程问答-------------------- 这是我刚做出来的算法:
List<string> list = new List<string>();
list.Add("app");
list.Add("abc");
list.Add("ab");
string s = "";
foreach (string str in list)
{
if (String.IsNullOrEmpty(s))
{
s = str;
}
else
{
s = s + @"\\" + str;
}
}
MessageBox.Show(s);
private void sub(string str)
{
string strs=str.Substring(0, str.IndexOf("\\"));
MessageBox.Show(strs);
try
{
string aa = str.Remove(0, str.IndexOf("\\")+1);
sub(aa);
}
catch { }
}不过,如果你讲TYR{}CATCH{}去掉了,就可以看到异常,判断一下就可以了。 --------------------编程问答--------------------
List<string> list = new List<string>();--------------------编程问答-------------------- 正则表达式怎么写? --------------------编程问答-------------------- 正则!!! --------------------编程问答-------------------- 正则表达式处理 --------------------编程问答--------------------
string stemp = "app\\aa\\bb\\cc.dll";
MatchCollection mstr = Regex.Matches(stemp, @"([\w.\w]*)");
for (int i = 0; i < mstr.Count; i++)
{
list.add(mstr[i].Groups[1].Value);
}
建议用?<data>这样的方式啊...
曾经维护一个程序,解析命令用了Groups[1]这样的方式,后来命令模式稍微改一下,我这里Groups后面的数字全部乱套了...苦不堪言... --------------------编程问答-------------------- 不应该用星号,应该用加好
MatchCollection mstr = Regex.Matches(stemp, @"([\w\d.]+)");
可以有数字、字母、点号,出现一次 --------------------编程问答-------------------- 用括号确定groups,不可能乱套 --------------------编程问答--------------------
原来的命令只要3层括号,现在的需要多一层括号才能解析,一共十来个指令,多的一层那层括号还不统一,全部乱套。用命名方式比较直观,而且容易维护。。。 --------------------编程问答-------------------- --------------------编程问答-------------------- 直接处理比较麻烦,最好添加一个头上的斜杠,变成
“\\app\\aa\\bb\\cc.dll”
然后用下面的正则捕获
\\\\(\w+)(?!.dll|.exe|.bat)\b
--------------------编程问答-------------------- 如果字符串一定都带文件名,那还有个偷懒的办法,“ \\”替换成"|",然后按“|”split,数组的最后一个不要就行了。
补充:.NET技术 , C#