求教一个简单的字符串判断问题,高分给
1. 有一个文本文件读取出部分内容如下,最好利用正则表达式,只输出"Compile Include="后边的哪几个cs文件,就是AppData.cs,ABC\DEF.cs, ABC\EFG.cs,当然可能cs文件名会不同于例子中的
.......
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="AppData.cs">
<DependentUpon>AppData.resx</DependentUpon>
</Compile>
<Compile Include="ABC\DEF.cs" />
<Compile Include="ABC\EFG.cs" />
.......
2. 一段字符串"D:\list\\Applications\Phone\App\program.cs" 帮我写一段代码,能自动将program.cs和前边的目录D:\list\\Applications\Phone\App分开,最好能用正则匹配。谢谢各位
------解决方案--------------------1. <Compile Include="(?'a'[^.]+.cs)"[^>]*>
2.
string address = @"D:\list\Applications\Phone\App\program.cs";
Console.WriteLine(Path.GetDirectoryName(address)); // D:\list\Applications\Phone\App
Console.WriteLine(Path.GetFileName(address)); // program.cs
Console.WriteLine(Path.GetFileNameWithoutExtension(address)); //program
------解决方案--------------------1. var reg=new Regex(@"(?<=Compile Include=(""))[^""]+(?=\1)");
2. Path.GetDirectoryName
------解决方案--------------------两个问题都不应该用正则表达式。
第一个问题应该用标准的XML解析器解析。
第二个问题应该用Path.GetFileName方法。
------解决方案-------------------- Regex reg = new Regex(@"<Compile Include=""(?<File>[^""]*)""[^>]*>");
string str = @"<Compile Include=""AppData.cs"">
<DependentUpon>AppData.resx</DependentUpon>
</Compile>
<Compile Include=""ABC\DEF.cs"" />
<Compile Include=""ABC\EFG.cs"" />";
MatchCollection mc = reg.Matches(str);
foreach (Match m in mc)
Console.WriteLine(m.Groups["File"].Value);