我正在解析一个文本文件,我正在做的很多事情涉及到如下代码:
int jobTypeStart = contents.IndexOf("JobType: ");
int jobTypeEnd = contents.IndexOf("\r\n", jobtypeStart);
string jobType = contents.Substring(jobtypeStart,
(jobTypeEnd - jobTypeStart )).Replace("JobType: ","");
这个相同的基本模式每个文件重复30次,数百或数千个文件在foreach循环中 . 每次声明一个新变量或重用那些int变量并只改变我正在寻找的IndexOf是否更有效?所以为了清楚起见,我的下一段代码应该是:
int userNameStart = contents.IndexOf("UserName: ");
int userNameEnd = contents.IndexOf("\r\n", userNameStart);
string userName= contents.Substring(userNameStart,
(userNameEnd - userNameStart)).Replace("UserName: ","");
或者整个事情应该更像:
int stringStart = contents.IndexOf("JobType: ");
int stringEnd = contents.IndexOf("\r\n", stringStart);
string jobType = contents.Substring(stringStart ,
(stringEnd - stringStart)).Replace("JobType: ","");
stringStart = contents.IndexOf("UserName: ");
stringEnd = contents.IndexOf("\r\n", stringStart);
string userName= contents.Substring(stringStart ,
(stringEnd - stringStart)).Replace("UserName: ","");
或者我过度复杂的事情真的无关紧要?
干杯 .
4 回答
看看你的代码,我可以看到一个模式 . 为什么不将所有变量(JobType,UserName ...)放入列表中并对其进行迭代以获取字符串 .
你应该将它重构为一个方法:
并称之为
在这种情况下,我赞成可读性 .
也许一种做这些东西的方法会有所帮助吗?
然后每次都打电话给它:
你最初的方式很好 . int和string是声明中的值类型,据我所知,每次进行另一次循环迭代时,它都会从堆中拉出来 .