Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从char[]转换后从字符串中修剪/null值(在C#中)_C#_Arrays_String_Casting_Char - Fatal编程技术网

从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);