有一个字符数组,例如
char [] biggerText = new char [8];
然后我同样输入一些值:
biggerText[0] = (char) 12;
biggerText[1] = (char) 48;
然后我使用以下操作:
string smallerText= string.Join("", biggerText);
执行smallerText.Length
时,会得到8和NOT 2。
在转换为字符串时,修剪此数组以省略null值的最有效方法是什么?
为什么不使用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(' ');
这样就可以了。
string smallerText = string.Join("", biggerText.Where(n => n != ' '));
这是一个很好的方法,因为Trim
只适用于空白,可能不适合您。
您可以使用TakeWhile
只接受字符,直到您看到"null"字符,假设您不想要第一个"null"字之后可能存在的任何字符。
string smallerText= string.Join("", biggerText.TakeWhile(c => c != ' '));
char [] biggerText = new char [8];
biggerText[0] = (char)12;
biggerText[1] = (char)48;
string smallerText= new string(biggerText).Replace(" ", string.Empty);
int length = smallerText.Length;
\0可以在任何位置,所以只需将其替换为空值即可。
如果你指的是最高效的:
string smallerText = new string(biggerText, 0, 2);
但"最有效的修剪方法"是.Trim
方法😊
string smallerText = new string(biggerText).TrimEnd(char.MinValue);