我正在处理一个应用程序,其中我在一个字符串中有多个ID,我从';'
以我的视图传递。
所以这就是它的样子" P171; P172"。
if (ModelState.IsValid)
{
hiddenIDnumber= hiddenIDnumber.Trim();
List<string> listStrLineElements = hiddenIDnumber.Split(';').ToList();
foreach (string str in listStrLineElements)
问题是,当我分割我的hiddenIDnumber时,即使我有两个数字,我得到3的计数并且返回""
(我相信这是一个空的空间)。
当我使用断点时,我得到&#34; P171&#34;,&#34; P172&#34;和&#34;&#34;。
由于我的FK约束,这导致我的程序失败。
有没有办法克服这个问题并以某种方式&#34;修剪&#34;空间出来了?
答案 0 :(得分:7)
使用string.Split
的另一个重载,允许您忽略空条目。例如:
List<string> listStrLineElements = hiddenIDnumber
.Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries)
.ToList();
答案 1 :(得分:2)
我想说,一种方法是使用String Split Options。对于String.Split,有一个带有两个参数的重载,即它就像
myString.Split(new [] {';'}, StringSplitOptions.RemoveEmptyEntries);
这应该可以防止数组中只有空字符串的任何条目。
答案 2 :(得分:0)
var listStrLineElements = hiddenIDnumber.Split(new char[]{';'}, StringSplitOptions.RemoveEmptyEntries);
使用参数StringSplitOptions.RemoveEmptyEntries
自动从结果列表中删除空条目。
答案 3 :(得分:0)
您可以尝试:
IList<string> listStrLineElements = hiddenIDnumber.Split(";".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
为了便于阅读,我更喜欢new [] { ';' }
,并将其返回到界面(IList<string>
)。
答案 4 :(得分:0)
分割时,您最终会得到;
s加1的数量。由于你的评论提到你有2 ;
s,你的列表中会得到3:在第一个分号之前,第一个和第二个之间,以及第二个分号之后。你没有得到一个空白的空间,因为你在string.Empty
;
if (ModelState.IsValid)
{
hiddenIDnumber= hiddenIDnumber.Trim(";");
List<string> listStrLineElements = hiddenIDnumber.Split(';').ToList();
foreach (string str in listStrLineElements)
这样你摆脱了;在你分手之前的最后,你不会得到一个空字符串。