微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在引发错误时检查策略中变量的空-索引超出了数组的范围

如何解决如何在引发错误时检查策略中变量的空-索引超出了数组的范围

有时候,我在“响应”中有超过2个值用管道符号分隔,而在其他情况下,我仅获得2个值,在这种情况下,下面的行将索引超出范围错误

  <set-variable name="id" value="@(((String)context.Variables["response"]).Split('|')[2])" />

当我使用变量值将内容检查到如下所示的“选择时间”条件时,由于它试图评估上面的行,因此没有值时会抛出错误

错误是-索引超出了数组的范围。

<when condition="@((String)context.Variables["id"] == "Lollypop")">

我在策略和跟踪中都有此行,如果没有响应的第三个值并且导致索引超出范围,我会看到它失败。如何进行调整,以至于什么都没有,然后只是空字符串(即“”值)?

编辑

在这里寻找空检查之类的东西,就像在C#中,我们有“?”如果为null,则放置一些空字符串。如何实现?

@((((String)context.Variables [“ response”])) .Split('|')[2])

解决方法

您可以使用下面的代码来判断数组(通过拆分字符串获得)是否具有两个以上的变量。

<set-variable name="count" value="@(((String)context.Variables["response"]).Split('|').Count())" />
<choose>
    <when condition="@((int)context.Variables["count"] > 2)">
        <set-variable name="id" value="@(((String)context.Variables["response"]).Split('|')[2])" />
    </when>
    <otherwise>
        <set-variable name="id" value="" />
    </otherwise>
</choose>

或者,如果您要获取该字符串中|之后的最后一个值,则可以直接使用一行。

<set-variable name="id" value="@(((String)context.Variables["response"]).Split('|').Last())" />

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。