簡體   English   中英

在C#中刪除字符串開頭的字符的最佳方法是什么?

[英]What is the best way to remove characters at start of a string in c#?

考慮到我有一個這樣的字符串:

var myStr = @"\r\n test";

刪除\\r\\n (回車符)和空字符等字符的最佳方法是什么

我能想到的一種方法是

var trimmedString = myStr.Replace("\r\n", "").Trim();

最優雅的方法是什么?

很難說是要刪除回車符和換行符,還是要刪除文字字符串: "\\r\\n"

您發布的代碼:

new string (@"\r\n  test")

甚至不是有效的語法。 如果要使用字符串文字,則語法為:

var someString = @"\r\n some value";

@表示您實際上在輸出中包含字符串: "\\r\\n" ,這意味着它將不會輸出轉義字符\\r\\n ,即回車符和換行符。

如果您想刪除特定的字符串 "\\r\\n" ,則可以像以前一樣使用String.Replace ,我已經清理了一下代碼並刪除了一些冗余:

var trimmedString = @"\r\n  test".Replace(@"\r\n", "");

如果您實際上想從字符串的開頭刪除轉義字符 ,則需要刪除@符號,使其不再是字符串文字,那么可以使用字符串的TrimStart()方法:

var trimmedString = "\r\n  test".TrimStart();

TrimStart()接受char[]參數,該參數詳細說明了要刪除的特定字符。 但是,如果不將任何參數傳遞給TrimStart() ,它將自動從字符串的開頭刪除空格字符。

在這里擺弄

假設您希望從字符串中刪除“原始”轉義序列,則可以如下概括基於正則表達式的方法:

var trimmed = Regex.Replace(original, @"^(\\[rntv]|\s)*", "");

這會刪除字符串開頭的逐字\\n\\r\\t\\v序列,並帶有可選的空格。 請注意,開頭的\\在逐字@"..."字符串文字內加倍,這意味着正則表達式將匹配轉義序列,而不是它表示的字符。

演示

最好的答案是使用正則表達式。

new Regex(@"(^\s+").Replace("\r\n BLah blah blah   ","")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM