2011-05-19 32 views
3

我在這裏寫入一個文本file..I我在SQL文件中搜索一個關鍵字Raiserror如果該關鍵字存在,我必須寫該行..通過使用C#修改某些字符來寫入文本文件?

它寫像

LineNo : 66 : raiserror ('Sequence number cannot be blank',16,1) 

但我需要只寫

LineNo : 66 : Sequence number cannot be blank 

這是possible..If所以如何修剪.. 這裏是我的代碼

while ((line = file.ReadLine()) != null) 
{ 
    if (line.IndexOf("Raiseerror", StringComparison.CurrentCultureIgnoreCase) != -1) 
    { 
     dest.WriteLine("LineNo : " + counter.ToString() + " : " + "   " + line.TrimStart()); 
    } 
    counter++; 
} 

file.BaseStream.Seek(0, SeekOrigin.Begin); 
counter = 1; 

有何建議?

回答

2

嘗試使用此

int errorIndex = line.IndexOf("Raiseerror", StringComparison.CurrentCultureIgnoreCase) 
if (errorIndex != -1) 
{ 
    int start = line.IndexOf('\'', errorIndex) + 1; 
    int finish = line.IndexOf('\'', start); 
    dest.WriteLine("LineNo : " + counter.ToString() + " : " + "   " + line.Substring(start,finish - start)); 
} 
0

我不是100%肯定你的問...爲什麼如果你要修剪的行添加所有的空格?如果我誤解了這個問題,我會刪除答案。

var logLine = "LineNo : " + counter.ToString() + " : " + "   "; 
dest.WriteLine(logLine.Trim()); 
1

如果啓動時總是相同的,ASIN LINENO:66:和錯誤是總是在「您可以使用此:

private string GetText(string text) 
{ 
    return string.Format("{0} {1}", text.Substring(0, text.LastIndexOf(":") + 1), text.Substring(text.IndexOf("'") + 1, (text.LastIndexOf("'") - text.IndexOf("'")) - 1)); 
} 

var text = GetText("LineNo : 66 : raiserror ('Sequence number cannot be blank',16,1)"); 

這將返回「LINENO:66:序列號不能空白」

[編輯]

text.Substring(text.IndexOf("'") + 1, (text.LastIndexOf("'") - text.IndexOf("'")) - 1) 

你想要做什麼。

你將不得不在周圍建立自己的休息!

+0

在sql文件它會像raiserror('序列號不能爲空',16,1)只...正在寫行numnber使用計數器 – bala3569 2011-05-19 14:50:40

+0

請參閱編輯。這與Stecya是一回事,但只有一行。 – 2011-05-19 14:53:42

+0

嘗試urs ..工作表示感謝 – bala3569 2011-05-19 17:06:12

2

最簡單的可能是使用捕獲正則表達式。你應該能夠做這樣的事情:

string pattern = @"raiserror \(\'(?<errortext>.+)\'"; 
Regex exp = new Regex(pattern); 
Match match = exp.Match(line); 
string errorText = match.Groups["errortext"].Value; 

我是一個有點冗長那裏,創造比嚴格需要更多的變量,但應該這樣做。您可能需要針對您的具體情況修改正則表達式模式,我的是最簡單的一個,適用於您提供的示例行。

如果您想要從每一行中提取幾個文本特徵(例如行號,日期等),您也可以擁有多個捕獲組。

相關問題