簡體   English   中英

C#TrimEnd修剪過多的字符

[英]C# TrimEnd trimming too many chars

我在使用string.TrimEnd()方法時看到奇怪的結果

var s = "FDLBicester.freshviprint01";
var x = s.TrimEnd("freshviprint01".ToCharArray());
Console.WriteLine(x);

產生

FDLBicester.

但是,稍微改變TrimEnd就包含了. 以及:

var s = "FDLBicester.freshviprint01";
var x = s.TrimEnd(".freshviprint01".ToCharArray());
Console.WriteLine(x);

產生

FDLBic

????

為什么我也會因為修剪而失去ester .

TrimEnd()將修剪傳遞給它的所有字符。

當你沒有通過. 修剪從那里停止,因為. 不在要修剪的字符列表中。

通過. ,那么它在字符修剪名單-等其他幾個字符之前(即, estr它也因此被裁切。

當你放

  var x = s.TrimEnd(".freshviprint01".ToCharArray());

你真的想刪除{'.', '0', '1', 'e', 'f', 'h', 'i', 'i', 'n', 'p', 'r', 'r', 's', 't', 'v'}中的所有 尾隨字符 {'.', '0', '1', 'e', 'f', 'h', 'i', 'i', 'n', 'p', 'r', 'r', 's', 't', 'v'}設置( c是第一個 不在集合中的字符):

  "FDLBicester.freshviprint01" -> "FDLBic"

請注意, icester中的所有字符都顯示在集合中,這就是為什么要剪掉它們 您可能想要切斷一些后綴,如下所示:

  var s = "FDLBicester.freshviprint01";
  var suffix = ".freshviprint01";

  var x = s.EndsWith(suffix) 
    ? s.Substring(0, s.Length - suffix.Length) 
    : s;

TrimEnd修剪作為傳遞修剪數組一部分的末尾的每個字符,並重復此操作,直到字符串的最后一個字符不是數組的一部分。

var s = "FDLBicester.freshviprint01";
var x = s.TrimEnd(".freshviprint01".ToCharArray());

cester.freshviprint01中的字符都是trim數組的一部分,這就是它們被刪除的原因。 它們通過的順序無關緊要。

var x = s.TrimEnd(".01efihnprstv".ToCharArray()); 

會有相同的結果。

TrimEnd函數從字符串的末尾刪除任何這些char 它與完整字符串不匹配。

試試這個:

var s = "FDLBicester.freshviprint01";
var t = ".freshviprint01";

var x =
    s.Length > t.Length && s.Substring(s.Length - t.Length) == t
        ? s.Substring(0, s.Length - t.Length) 
        : s;

Console.WriteLine(x);

甚至這個:

var x = s.Split(new [] { t }, StringSplitOptions.None)[0];

暫無
暫無

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

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