首页 > 解决方案 > Sharepoint online:使用@currentField.x 时捕获索引错误

问题描述

我正在尝试验证列的输入。输入必须是123-45.678.901ab模式。

我得到的最接近的是使用 JSON 格式:

{ “$schema”:“https://developer.microsoft.com/json-schemas/sp/v2/column-formatting.schema.json”,“elmType”:“div”,“txtContent”:“@currentField” , "style": { "background-color": "=if(@currentField.length>13,if((@currentField.0>='0')&&(@currentField.0<='9')&&( @currentField.1>='0')&&(@currentField.1<='9')&&(@currentField.2>='0')&&(@currentField.2<='9')&&(@currentField .3=='-')&&(@currentField.4>='0')&&(@currentField.4<='9')&&(@currentField.5>='0')&&(@currentField.5 <='9')&&(@currentField.6=='.')&&(@currentField.7>='0')&&(@currentField.7<='9')&&(@currentField.8>='0')&&(@currentField.8<='9')&&(@currentField.9>='0')&&(@ currentField.9<='9')&&(@currentField.10=='.')&&(@currentField.11>='0')&&(@currentField.11<='9')&&(@currentField. 12>='0')&&(@currentField.12<='9')&&(@currentField.13>='0')&&(@currentField.13<='9'), if(@currentField.length >14,if((@currentField.14>='a')&&(@currentField.14<='z')||(@currentField.14>='A')&&(@currentField.14<=' Z'), if(@currentField.length>15,if((@currentField.15>='a')&&(@currentField.15<='z')||(@currentField.15>='A' )&&(@currentField.15<='Z'),'green', 'red'), 'red'),'red'),'red'),'red'),'red')" } }

在此处输入图像描述

问题是,如果输入短于 16 个字符,我的整个公式就会崩溃(既不是绿色也不是红色)。我希望通过在访问@currentField.15 之前调用 if(@currentField.length>15) 来防止这种情况。如果输入太短,是否有正确的方法来使用 @currentField.X 而不会崩溃?

标签: jsonsharepointformatting

解决方案


您可以尝试以下方法,使用substring(@currentField, 15, 16)而不是@currentField.15

if(@currentField.length>15,if((substring(@currentField, 15, 16)>='a')&&(substring(@currentField, 15, 16)<='z')||(substring(@currentField, 15, 16)>='A')&&(substring(@currentField, 15, 16)<='Z')

推荐阅读