有没有办法防止方括号插入我的弦中?

时间:2019-05-06 20:38:46

标签: apex

我似乎在要用于动态SOQL查询的字符串中插入了一些方括号。我正在尝试检查订单的状态是否是用户选择的选项之一。通常,我只能在IN子句后抛出一个列表,但是因为这是一个字符串,所以我不能这样做。相反,我有一个循环,循环遍历选定状态的列表,并根据需要添加到查询字符串中。

我在另一个组织中使用了完全相同的语法,没有任何问题,所以我很好奇为什么在另一个组织中会发生这种情况。我已经发布了存在该问题的版本。希望这并不太难消除。

if(orderStatuses.size() > 0){
     query += ' AND ccrz__OrderStatus__c IN (\''+orderStatuses[0]+'\'';
     for(Integer i = 1; i < orderStatuses.size(); i++){
          query += ', \''+orderStatuses[i]+'\'';
     }
     query += ')';
}

我想要的是一个看起来像

的字符串
'AND ccrz__OrderStatus__c IN ('Completed', 'Order Submitted')'

但是我得到了

'AND ccrz__OrderStatus__c IN ('[Completed', ' Order Submitted]')'

我也尝试过使用'replaceAll()'方法在运行查询之前强行删除它们,但是无论如何它们仍然会出现。

query.replaceAll('[\\[\\]]','');

仅选择一个选项时,它的格式就很好,没有括号,但是一旦选择了一个以上,就会发生这种情况。 任何和所有帮助将不胜感激这一点。正如我上面提到的,当在不同的组织中运行时,相同的确切代码(授予不同的对象等)为我提供了正确的结果,因此我很困惑。预先感谢!

1 个答案:

答案 0 :(得分:0)

我可以通过将“ [”和“]”添加到数组“ orderStatuses”来重现您的问题。如果我是你,我会在这里寻找你的错误。您看到的方括号可能实际上是您传递的字符串的一部分。在orderStatuses [1]中还有一个额外的空间,该空间进一步告诉我您在代码/ SQL中早些时候将不需要的东西添加到了数组中。

var orderStatuses = [];
orderStatuses.push("[Completed");
orderStatuses.push(" Order Submitted]");

var query = ' AND ccrz__OrderStatus__c IN (\'' + orderStatuses[0] + '\'';
for (var i = 1; i < orderStatuses.length; i++) {
  query += ', \'' + orderStatuses[i] + '\'';
}
query += ')';

alert(query)