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