从char[]转换后从字符串中修剪/null值(在C#中)
有一个字符数组,例如从char[]转换后从字符串中修剪/null值(在C#中),c#,arrays,string,casting,char,C#,Arrays,String,Casting,Char,有一个字符数组,例如 char [] biggerText = new char [8]; 然后我同样地输入一些值: biggerText[0] = (char) 12; biggerText[1] = (char) 48; 然后我使用以下操作: string smallerText= string.Join("", biggerText); 当您执行smallerText.Length时,会得到8而不是2 在转换为字符串时,修剪此数组以忽略空值的最有效方法是什么?这应该可以做到 stri
char [] biggerText = new char [8];
然后我同样地输入一些值:
biggerText[0] = (char) 12;
biggerText[1] = (char) 48;
然后我使用以下操作:
string smallerText= string.Join("", biggerText);
当您执行smallerText.Length
时,会得到8而不是2
在转换为字符串时,修剪此数组以忽略空值的最有效方法是什么?这应该可以做到
string smallerText = string.Join("", biggerText.Where(n => n != '\0'));
这是一个很好的方法,因为
Trim
仅适用于空格,可能不适合您。您可以使用TakeWhile
仅获取字符,直到看到“null”字符为止,前提是您不需要第一个“null”字符之后可能存在的任何字符
string smallerText= string.Join("", biggerText.TakeWhile(c => c != '\0'));
您可以从数组中创建一个新字符串,并从末尾修剪空字符:
string smallerText = new String(biggerText).TrimEnd('\0');
为什么不使用
列表
?这样,您就不必担心索引,也不必知道开头的最终长度(正如@n8wrl在评论中指出的)
并且该字符串
将具有正确的长度
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
方法“trim
只适用于空白”-并非如此。您应该查看Trim
的文档。我查看了。从当前字符串对象中删除所有前导和尾随的空白字符。还有一个重载,需要修剪用户定义的字符数组。奇怪的是,没有任何文档说明您可以为它提供一个字符而不是一个字符数组,但是它可以工作。而且您不必预先声明大小!两年内,当你的代码发生了变化,并且你正在使用9个字符(或更多!)时,这将是一个巨大的帮助。你尝试过一些答案吗?他们成功了吗?你需要更多的帮助吗?
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;
string smallerText = new string(biggerText, 0, 2);