C# 如何删除字符串数组结果直到结果为零?
我有一个表单C# 如何删除字符串数组结果直到结果为零?,c#,C#,我有一个表单Form1,其中包含一个数组: string [] lines = value2.Split(new string[] { Environment.NewLine }, StringSplitOptions.None); 其中value2是如下所示的文本文档: x y z 然后,我有另一个表单Form2,它将一个数组随机收集到一个字符串=>person。 此表单还有一个返回按钮,可返回到Form1。 Person是一个公共静态字符串 我试图找到一种方法,当您返回到Form1时,您
Form1
,其中包含一个数组:
string [] lines = value2.Split(new string[] { Environment.NewLine }, StringSplitOptions.None);
其中value2是如下所示的文本文档:
x
y
z
然后,我有另一个表单Form2
,它将一个数组随机收集到一个字符串=>person
。
此表单还有一个返回按钮,可返回到Form1
。
Person是一个公共静态字符串
我试图找到一种方法,当您返回到Form1
时,您不能再次使用相同的随机值person
我试过:
lines=lines.Where(s=>s!=person.ToArray()代码>在提交至表单2上单击。但这似乎不起作用
表格2
:
表格1
:
你的密码是什么
lines = lines.Where(s => s != person).ToArray();
。。。实际上是有效的
现在,如果它不工作,这意味着字符串person
与数组中的任何项都不匹配。可能会有额外的空格,或者更可能的是,大写字母不一样
请注意,如果person
是“X”
,而行是{“X”、“y”、“X”}
,则您的代码将与行中的任何项目都不匹配
尝试使资本化正常化:
lines = lines.Where(s => s.ToLower() != person.ToLower()).ToArray();
最后,请注意,如果您正在读取的文件末尾有一个换行符,那么您将在lines数组中得到一个空条目。然后,如果将该空字符串分配给person
,则该代码自然不会与数组中的任何内容匹配,也不会删除任何项目
要避免这种情况,请在执行string.Split()时使用StringSplitOptions.removeMptyEntries
:
您可能希望将其放入一个更有用的数据结构(如堆栈或队列)中,然后从中删除。person
直接来自数组。不可能不匹配。而且我在2天前开始学习c#。你能给我解释一下s是什么吗?好的,我建议编辑你的问题,然后发布代码,我们会进一步了解。通过您发布的内容,以上是我能想到的提供s
的最详细的信息?在中,其中(s=>s.ToLower()…)
——这是一个Lambda表达式
<当Where()
表达式在array
中循环时,code>s
是为行的每一项指定的别名。问题是,每次用户按下按钮1时,都会读取新文件,并从该文件重新生成整个数组。您的代码永远不会发生这种情况。您需要读取一次文件,然后分别连接按钮。我建议对此提出一个新问题,但首先试着自己去做。
lines = lines.Where(s => s != person).ToArray();
lines = lines.Where(s => s.ToLower() != person.ToLower()).ToArray();
lines = value.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries);