Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/258.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
在<;列表>;字符串C#_C# - Fatal编程技术网

在<;列表>;字符串C#

在<;列表>;字符串C#,c#,C#,我正在处理一个应用程序,其中我从视图中传递的字符串中有多个ID,以分隔;' 这就是“P171;P172”的样子 if(ModelState.IsValid) { hiddenIDnumber=hiddenIDnumber.Trim(); List listStrLineElements=hiddenIDnumber.Split(“;”).ToList(); foreach(listStrLineElements中的字符串str) 问题是,当我拆分hiddenIDnumber时,即使我有两个数字

我正在处理一个应用程序,其中我从视图中传递的字符串中有多个ID,以
分隔;'
这就是“P171;P172”的样子

if(ModelState.IsValid)
{
hiddenIDnumber=hiddenIDnumber.Trim();
List listStrLineElements=hiddenIDnumber.Split(“;”).ToList();
foreach(listStrLineElements中的字符串str)
问题是,当我拆分hiddenIDnumber时,即使我有两个数字,我也会得到一个3的计数,然后返回
(我认为这是一个空白)。 当我使用断点时,我得到“P171”、“P172”和“”。 这导致我的程序由于FK限制而失败


有没有一种方法可以“克服这一点并以某种方式“修剪”空间?

我想说的是,一种方法是使用字符串拆分选项。对于String.Split,有一个重载,它包含两个参数,即

myString.Split(new [] {';'}, StringSplitOptions.RemoveEmptyEntries);

这将防止数组中的任何条目仅为空字符串。

我想说的一种方法是使用字符串拆分选项。对于string.Split,有一个重载包含两个参数,即

myString.Split(new [] {';'}, StringSplitOptions.RemoveEmptyEntries);
var listStrLineElements = hiddenIDnumber.Split(new char[]{';'}, StringSplitOptions.RemoveEmptyEntries);
这将防止数组中的任何条目仅为空字符串

var listStrLineElements = hiddenIDnumber.Split(new char[]{';'}, StringSplitOptions.RemoveEmptyEntries);
使用参数
StringSplitOptions.RemoveEmptyEntries
自动从结果列表中删除空条目

使用参数StringSplitOptions.RemoveEmptyEntries自动从结果列表中删除空条目。

使用另一个重载,该重载允许您忽略空条目。例如:

List<string> listStrLineElements = hiddenIDnumber
    .Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries)
    .ToList();
List listStrLineElements=hiddenIDnumber
.Split(新[]{';'},StringSplitOptions.RemoveEmptyEntries)
.ToList();
使用另一个重载,该重载允许您忽略空条目。例如:

List<string> listStrLineElements = hiddenIDnumber
    .Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries)
    .ToList();
List listStrLineElements=hiddenIDnumber
.Split(新[]{';'},StringSplitOptions.RemoveEmptyEntries)
.ToList();
您可以尝试:

IList<string> listStrLineElements = hiddenIDnumber.Split(";".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
IList listStrLineElements=hiddenIDnumber.Split(“;”.ToCharArray(),StringSplitOptions.removemptyEntries);
为了可读性,我更喜欢这个而不是新的[]{';'}
,并将它返回到一个接口(
IList
)。

您可以尝试:

IList<string> listStrLineElements = hiddenIDnumber.Split(";".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
IList listStrLineElements=hiddenIDnumber.Split(“;”.ToCharArray(),StringSplitOptions.removemptyEntries);

为了可读性,我更喜欢这个而不是新的[]{';'},并将它返回到接口(
IList
).

拆分时,您将得到
的数目加上一个。由于您的注释提到您有2个
s,因此列表中会有3个:在第一个分号之前,在第一个分号和第二个分号之间,在第二个分号之后。您不会得到一个空的空格,而是一个
字符串。空的
最后一个

if (ModelState.IsValid)
{
    hiddenIDnumber= hiddenIDnumber.Trim(";");
    List<string> listStrLineElements = hiddenIDnumber.Split(';').ToList();

    foreach (string str in listStrLineElements)
if(ModelState.IsValid)
{
hiddenIDnumber=hiddenIDnumber.Trim(“;”);
List listStrLineElements=hiddenIDnumber.Split(“;”).ToList();
foreach(listStrLineElements中的字符串str)

这样,在拆分之前,您就可以在结尾处去掉;而不会得到空字符串。

拆分时,您将得到
s的数字加上一。由于您的注释提到您有2个
s,因此列表中会有3个:在第一个分号之前,在第一个分号和第二个分号之间,在第二个分号之后nd.您没有得到一个空的空格,您得到的是一个
字符串。空的
,因为在最后一个

if (ModelState.IsValid)
{
    hiddenIDnumber= hiddenIDnumber.Trim(";");
    List<string> listStrLineElements = hiddenIDnumber.Split(';').ToList();

    foreach (string str in listStrLineElements)
if(ModelState.IsValid)
{
hiddenIDnumber=hiddenIDnumber.Trim(“;”);
List listStrLineElements=hiddenIDnumber.Split(“;”).ToList();
foreach(listStrLineElements中的字符串str)


通过这种方式,您可以在拆分之前去掉;在最后,您不会得到一个空字符串。

唯一可以返回3个条目的方法是,如果字符串中有2个
。是这样吗?@DavidG正如我在检查断点时所说的,它不会将
列为列表中的条目,只是
”“
我说的是
hiddenIDnumber
的内容,而您可以使用StringSplitOptions.RemoveEmptyEntries-最好弄清楚为什么会发生这种情况。正如David所说,如果您有2个”;”,例如:“P171;P172@DavidG是的,我有2个
返回3个条目的唯一方法是如果字符串中有2个
。是这样吗?@DavidG正如我在检查断点时所说的,它不会将
列在列表中,只是
我说的是
hiddenIDnumber
的内容,而你可以使用StringSplitOptions.RemoveEmptyEntries——最好弄清楚为什么会发生这种情况。正如David所说,如果你有2个“;”的话,就会发生这种情况,比如:“P171;P172;”@DavidG是的,我确实有2
没有这样的Split methodCloser重载!但现在它不会编译:)那不是数组。在某些情况下,那可能是数组初始值设定项。代码现在不会编译了。我确保它能编译,以及所有这些好东西!感谢大家检查它。坚持使用它并修复它做得很好正在修改你的代码。许多人只是因为被更正而生气。没有这样多的Split methodCloser!但现在它不会编译:)那不是数组。在某些情况下,那可能是数组初始值设定项。代码现在不会编译了。我确保它可以编译以及所有这些好东西!感谢大家检查它。s做得很好很多人只是因为被纠正而生气。没有这么多的拆分方法没有这么多的拆分方法method@SergeyBerezovskiy我很惊讶这么多人弄错了!@SergeyBerezovskiy我很惊讶这么多人弄错了!