在连接字符串中选择值的前两个字符

时间:2013-04-03 21:35:36

标签: salesforce formula

我正在尝试创建一个公式字段,用于检查字符串,该字符串是由逗号分隔的一系列连接值。我想检查字符串中每个逗号分隔值的前两个字符。例如,字符串模式可以是:abcd,efgh,ijkl,mnop,qrst,uvwx

在我的公式中,我想检查前两个字符是否为'ab','ef'

如果是这样,我会返回true,否则为false。

感谢。

2 个答案:

答案 0 :(得分:0)

要正确执行此操作,您需要使用正则表达式。遗憾的是,REGEX函数在公式字段中不可用。但是,它在验证规则和工作流规则中的公式中可用。因此,您可以在验证或工作流规则中指定以下公式:

OR(
AND(
    NOT(
        BEGINS( KXENDev__Languages__c, "ab" )
    ),
    NOT(
        BEGINS( KXENDev__Languages__c, "ef" )
    )
),
REGEX( KXENDev__Languages__c , ".*,(?!ab|ef).*")
)

如果它是验证规则,那么你已经完成了 - 如果任何条目以“ab”或“ef”开头,则此公式将产生错误。如果它是一个工作流规则,那么你可以添加一个字段更新,当这个公式为真时,用False更新一些字段(如果这个公式为真,那么至少有一个项目不以ab或ef开头,所以这将使你的领域失真。

有些人可能会问“BEGINS声明有什么用?你不能用一个REGEX完成这一切吗?”是的,我可能会,但这会导致一个日益复杂的REGEX声明,而且这些在Salesforce.com中很难调试,所以我更喜欢让我在Salesforce.com中的REGEX尽可能简单。

答案 1 :(得分:0)

我建议你使用CONTAINS方法搜索',ab'和',ef'。但首先你需要重新实现组成这个字符串的方法,所以它在第一个子字符串之前加上','。最后返回的字符串应该看起来像',abcd,efgh,ijkl,mnop,qrst,uvwx'。 如果你无法重新实现组成这个字符串的方法,请使用LEFT([我们的字符串在这里],2)方法检查前两个字符。