json - 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 而不会崩溃?
解决方案
您可以尝试以下方法,使用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')
推荐阅读
- elasticsearch - 在 Elasticsearch 中使用 update_by_query API 更新文档或插入
- python - Seaborn:数据上方辅助轴的网格线(具有不同的刻度)
- python - 从另一个数据帧中查找和替换数据帧
- windows - 如何使用批处理文件连接到 Oracle DB
- outlook - 标记为垃圾邮件的电子邮件签名
- amazon-ecs - 无法使用 docker hub 私有存储库映像注册 ecs 任务
- java - 如何在testng的单独java文件中使用@BeforeTest
- ios - 是否可以禁用应用程序中的其他应用程序
- html - 缩小到下拉菜单时的导航栏问题
- reactjs - 循环内组件的单个实例上的条件类