我有一个情况,我给了一个文本格式如下的文本文件:
C:Usersadmindocumentsreport2011.docx: My Report 2011 C:Usersadmindocumentsnewposter.docx: Dinner Party Poster 08
如何修剪文本文件,以便修剪“:”和后面的所有字符。
例如,这样的输出将如下所示:
C:Usersadmindocumentsreport2011.docx C:Usersadmindocumentsnewposter.docx Current Code: private voID button1_Click(object sender,EventArgs e) { using (StreamWriter sw = file.AppendText(@"c:output.txt")) { StreamReader sr = new StreamReader(@"c:filename.txt"); Regex reg = new Regex(@"w:(.(?!:))+"); List<string> parsedStrings = new List<string>(); while (sr.EndOfStream) { sw.Writeline(reg.Match(sr.Readline()).Value); } } }
不工作:(
ActivateDeviceEx是否启动驱动程序?
防止subprocess创build可见的窗口?
如何以编程方式(c#)valIDation国际文化(如中文)的驱动器号?
如何强制windows重新连接到networking驱动器
如何编译使用VS2010的windows x64位的Leptonica库?
windows桌面ScreenMarker
什么是Application Server for ASP.NET?
linux命令在使用SharpSSH库时不能从.NET执行
.NET窗口捕获
IIS – 从.NET应用程序的Cli中将目录设置为应用程序
int index = myString.LastIndexOf(":"); if (index > 0) myString= myString.Substring(0,index);
编辑 – 添加基于修改问题的答案。 它可以被略微压缩,但是为了清楚发生的事情而扩展了。
using (StreamWriter sw = file.AppendText(@"c:output.txt")) { using(StreamReader sr = new StreamReader(@"input.txt")) { string myString = ""; while (!sr.EndOfStream) { myString = sr.Readline(); int index = myString.LastIndexOf(":"); if (index > 0) myString = myString.Substring(0,index); sw.Writeline(myString); } } }
编辑
StreamReader sr = new StreamReader("yourfile.txt"); Regex reg = new Regex(@"w:(.(?!:))+"); List<string> parsedStrings = new List<string>(); while (!sr.EndOfStream) { parsedStrings.Add(reg.Match(sr.Readline()).Value); }
当然。 在阅读每一行时,做一个
Console.Writeline(line.Substring(0,line.IndexOf(": "));
我会使用这里给出的答案Code修剪在C#中的文本文件的一部分,并找到第二次出现,然后在子字符串中使用它。
var s = @"C:Usersadmindocumentsreport2011.docx: My Report 2011"; var i = GetNthIndex(s,':',2); var result = s.Substring(i+1); public int GetNthIndex(string s,char t,int n) { int count = 0; for (int i = 0; i < s.Length; i++) { if (s[i] == t) { count++; if (count == n) { return i; } } } return -1; }
假设在文件应该存在的地方完成这个工作,你可以在得到冒号索引后,通过检查文件的存在来处理这个问题(考虑到我所假设的)中的任何冒号。
List<string> files = new List<string>(); files.Add(@"C:Usersadmindocumentsreport2011.docx: My Report 2011"); files.Add(@"C:Usersadmindocumentsnewposter.docx: Dinner Party Poster 08"); files.Add(@"C:Usersadmindocumentsnewposter.docx: Dinner Party: 08"); int lastColon; string filename; foreach (string s in files) { bool isfilePath = false; filename = s; while (!isfilePath) { lastColon = filename.LastIndexOf(":"); if (lastColon > 0) { filename = filename.Substring(0,lastColon); if (file.Exists(filename)) { Console.Writeline(filename); isfilePath = true; } } else { throw new fileNotFoundException("file not found",s); } } }
试试这个:更快:
string s = @"C:Usersadmindocumentsreport2011.docx: My Report 2011"; string path = Path.GetDirectoryname(s) + s.Split(new char[] { ':' }) [1]; Console.Writeline(path); //C:Usersadmindocumentsreport2011.docx
您需要导入System.IO
你可以使用split:
string[] splitted= myString.Split(':');
然后你得到一个数组,你拿第一个。
var mySplittedString = splitted[0]
看看这里,如果你需要更多的信息。
编辑:在你的情况下,你得到一个数组至少3的大小,所以你需要拆分[0]和拆分[1]
总结以上是内存溢出为你收集整理的用C#修饰部分文本文件的代码全部内容,希望文章能够帮你解决用C#修饰部分文本文件的代码所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)