从char[]转换后从字符串中修剪/null值(在C#中)

本文关键字:null 修剪 转换 字符串 char | 更新日期: 2023-09-27 18:16:18

有一个字符数组,例如

char [] biggerText = new char [8];

然后我同样输入一些值:

biggerText[0] = (char) 12;
biggerText[1] = (char) 48;

然后我使用以下操作:

string smallerText= string.Join("", biggerText);

执行smallerText.Length时,会得到8和NOT 2

在转换为字符串时,修剪此数组以省略null值的最有效方法是什么?

从char[]转换后从字符串中修剪/null值(在C#中)

为什么不使用List<char>?这样,您就不必担心索引,也不必知道开头的最终长度(正如@n8wrl在评论中指出的那样(。

var list = new List<char>();
list.Add((char)12);
list.Add((char)48);

然后你可以用一种更优雅的方式获得最终的string

var smallerText = new string(list.ToArray());

并且该string将具有正确的Length

您可以从数组中生成一个新字符串,并从末尾修剪空字符:

string smallerText = new String(biggerText).TrimEnd(''0');

这样就可以了。

string smallerText = string.Join("", biggerText.Where(n => n != ''0'));

这是一个很好的方法,因为Trim只适用于空白,可能不适合您。

您可以使用TakeWhile只接受字符,直到您看到"null"字符,假设您不想要第一个"null"字之后可能存在的任何字符。

string smallerText= string.Join("", biggerText.TakeWhile(c => c != ''0'));
char [] biggerText = new char [8];
    biggerText[0] = (char)12;
    biggerText[1] = (char)48;
    string smallerText= new string(biggerText).Replace("'0", string.Empty);
    int length = smallerText.Length;

''0可以在任何位置,所以只需将其替换为空值即可。

如果你指的是最高效的:

string smallerText = new string(biggerText, 0, 2);

但"最有效的修剪方法"是.Trim方法

string smallerText = new string(biggerText).TrimEnd(char.MinValue);