【值更新】【实体服务规则】字符串拼接表达式举例原创
金蝶云社区-云社区用户75580314
云社区用户75580314
27人赞赏了该文章 3743次浏览 未经作者许可,禁止转载编辑于2020年10月23日 15:53:09

分隔符

  • 问题:

用值更新事件 或 实体服务规则,计算定义公式的值并填写到指定的列,实现功能:

将4个文本控件中的字符串拼接起来,用'/'分隔,填到另一个文本控件。要求4个文本有空值时,'/'不重复。

即'a'、''、'c'、'd'拼接成'a/c/d'。


  • 解决方案:

使用如图表达式:

downloadfile (1).png


结果如下:

downloadfile.png


表达式:

F_MOB_Text_Result  = '/'.join(x for x in ( (F_MOB_Text OR '').strip() , (F_MOB_Text1 OR '').strip() , (F_MOB_Text2 OR '').strip() , (F_MOB_Text3 OR '').strip() ) if x != '')
  1. str.join(sequence) 方法,将 sequence 中的元素连接起来,以 str 分隔,返回新字符串。

  2. (F_MOB_Text OR '').strip(),F_MOB_Text 字段为空则返回 '',否则返回 F_MOB_Text 的值的字符串,并去掉头尾空格。

  3. ( (F_MOB_Text OR '').strip() , (F_MOB_Text1 OR '').strip() , (F_MOB_Text2 OR '').strip() , (F_MOB_Text3 OR '').strip() ),() 初始化一个 tuple,其中有4个元素,即4个文本控件中的字符串。tuple 是一个 sequence。

  4. (x for x in ( tuple ) if x != ''),过滤 tuple 中的元素,返回不为 '' 的元素,组成一个 sequence。

  5. 总结起来就是,将4个文本控件中的字符串,不为空的取出来,以 '/' 分隔连接起来。


赞 27