2017-04-16 20 views
1

我正在使用C#(unity3d)。C#刪除字符串中的最後一行

我有一個字符串包含由\r\n分隔的行,我需要刪除最後一行。 z 我設法做了一些工作,但它需要3行,我覺得也許在C#中可能會縮短一些。

這裏是我當前的代碼:

int index = infoTxt.text.LastIndexOf("\r\n"); 
infoTxt.text = infoTxt.text.Substring(0, index - 2); 
infoTxt.text = infoTxt.text.Substring(0, infoTxt.text.LastIndexOf("\r\n")+2); 

這是效率不夠高,經常使用,具有文本字符串增長隨着時間的推移? 這是用於類似控制檯的系統。

回答

0

你可以簡單地做實現這一目標:

var trimmed = text.Substring(0, text.LastIndexOf("\r\n")); 

測試了:

var text = File.ReadAllText("data.txt"); // "row1\r\nrow2\r\nrow3" 
var trimmed = text.Substring(0, text.LastIndexOf("\r\n")); // "row1\r\nrow2" 

你的雙亞拉絲建議用一個空行數據結束。如果是這樣,那麼你需要它的second last index

string value = "\r\n"; 
var text = File.ReadAllText("data.txt"); //"row1\r\nrow2\r\nrow3\r\n" 
int lastPosition = text.LastIndexOf(value); 
var trimmed = text.Substring(0, text.LastIndexOf(value, lastPosition-1)); // "row1\r\nrow2" 

最後 - 見@ serge.karalenka建議使用Environment.NewLine,而不是"\r\n"


如果您有沒有新的選項那麼你應該:

var trimmed = text.Substring(0, lastPosition == -1 ? text.Length : 
        text.LastIndexOf(Environment.NewLine, lastPosition - 1)); 
+0

這是給我的「ArgumentOutOfRangeException:不能爲負」 – FLX

+0

@FLX哪一個? –

+0

第二個。你說得對,總是有一條空白的路線。 – FLX

0

你overri用你的第三行去掉第二行的結果(只需加上「\ r \ n」)。此外,您可以使用Environment.NewLine而不是「\ r \ n」,因此您的代碼將是跨平臺的。 所以只有一行將滿足你的任務:

var trimmed = text.Substring(0, text.LastIndexOf(Environment.NewLine)); 
相關問題