为什么拆分函数不会在 GridView 中抛出意外结果
Why the split function is not throwing unexpected result in GridView
我使用的是 gridview,因为我采用了 2 列(1 个 TemplateField 和 1 个 BoundField)的 GridView。
我将相同的数据列(名为 'Stage')绑定到两个网格列。
原文值:1;#Original u/s 139#Test
第 1 列中的预期结果:1;#Original u/s 139#Test
第 2 列的预期结果:Original u/s 139#Test
<asp:BoundField DataField="Stage" HeaderText="Original Value" SortExpression="Stage" />
<asp:TemplateField HeaderText="Using Split Function">
<ItemTemplate>
<%# Eval("Stage").ToString().Contains("#") ? Eval("Stage").ToString().Split('#')[1] : Eval("Stage") %>
</ItemTemplate>
</asp:TemplateField>
结果:
Original Value | Using Split Function
1;#Original u/s 139#Test | Original u/s 139
第 2 列的结果 应该是 Original u/s 139#Test
.
我的问题是为什么拆分函数将第 2 列中的值拆分两次?
Split
在给定 char
或 string
的所有出现处拆分字符串。所以你的字符串将被分成 3 个字符串:
[0] 1;
[1] Original u/s 139
[2] Test
您应该从第一次出现 #
开始使用 substring
Eval("Stage").ToString().Contains("#") ? Eval("Stage").ToString().Substring(Eval("Stage").IndexOf('#') + 1) : Eval("Stage")
我使用的是 gridview,因为我采用了 2 列(1 个 TemplateField 和 1 个 BoundField)的 GridView。
我将相同的数据列(名为 'Stage')绑定到两个网格列。
原文值:1;#Original u/s 139#Test
第 1 列中的预期结果:1;#Original u/s 139#Test
第 2 列的预期结果:Original u/s 139#Test
<asp:BoundField DataField="Stage" HeaderText="Original Value" SortExpression="Stage" />
<asp:TemplateField HeaderText="Using Split Function">
<ItemTemplate>
<%# Eval("Stage").ToString().Contains("#") ? Eval("Stage").ToString().Split('#')[1] : Eval("Stage") %>
</ItemTemplate>
</asp:TemplateField>
结果:
Original Value | Using Split Function
1;#Original u/s 139#Test | Original u/s 139
第 2 列的结果 应该是 Original u/s 139#Test
.
我的问题是为什么拆分函数将第 2 列中的值拆分两次?
Split
在给定 char
或 string
的所有出现处拆分字符串。所以你的字符串将被分成 3 个字符串:
[0] 1;
[1] Original u/s 139
[2] Test
您应该从第一次出现 #
substring
Eval("Stage").ToString().Contains("#") ? Eval("Stage").ToString().Substring(Eval("Stage").IndexOf('#') + 1) : Eval("Stage")