【发布时间】:2021-05-05 06:55:44
【问题描述】:
我有这个字符串,我需要在我的日期值开始之前获取第一个字符。例如,如果我的名称为 ZXDER_20201209220430Z,我需要 ZXDER,如果我有 ZXDDFR_IUT_23_20201209220430Z,我需要 ZXDDFR_IUT_23。我如何在 Power 自动化中执行此操作。最后一个下划线后的值将始终是日期值。
【问题讨论】:
标签: power-automate
我有这个字符串,我需要在我的日期值开始之前获取第一个字符。例如,如果我的名称为 ZXDER_20201209220430Z,我需要 ZXDER,如果我有 ZXDDFR_IUT_23_20201209220430Z,我需要 ZXDDFR_IUT_23。我如何在 Power 自动化中执行此操作。最后一个下划线后的值将始终是日期值。
【问题讨论】:
标签: power-automate
肯定有更有效的方法可以实现这一点,但我认为它可以帮助您更好地了解实际发生的情况。代码在屏幕截图下方。这不需要两个变量之间有任何不同。我只是展示了它们如何使用相同的逻辑。
GetAfterUnderScoreStringTest1 =
@{lastIndexOf(variables('StringTest1'), '_')}
GetAfterLastUnderScoreStringTest2 =
@{lastIndexOf(variables('StringTest2'), '_')}
LengthOfString1 =
@{length(variables('StringTest1'))}
LengthOfString2
@{length(variables('StringTest2'))}
String1Delta =
@{sub(variables('LengthOfString1'),variables('GetAfterUnderScoreStringTest1'))}
String2Delta =
@{sub(variables('LengthOfString2'),variables('GetAfterLastUnderScoreStringTest2'))}
字符串1 =
@{substring(variables('StringTest1'),variables('GetAfterUnderScoreStringTest1'),variables('String1Delta'))}
字符串2 =
@{substring(variables('StringTest2'),variables('GetAfterLastUnderScoreStringTest2'),variables('String2Delta'))}
【讨论】:
使用带有split() 和take() 函数的表达式在通过下划线将字符串拆分为数组后获取字符串的第一部分。然后join()结果加上下划线。
这个表达式一气呵成:
join(take(split(triggerBody()['text'], '_'), sub(length(split(triggerBody()['text'], '_')), 1)), '_')
split(triggerBody()['text'], '_') 将文本拆分为字符串中每个下划线的 JSON 数组。length() 函数中再次进行拆分。length() 的计算用于 sub() 函数,以从数组中的总项目中减去 1。sub() 函数提供了表达式将 take() 从数组中获取的项目总数。join() 函数将所有项目放入新创建的take() 数组中,以创建一个全新的字符串。我一直在使用数组解析文本有一段时间了,而且我通常更喜欢使用它而不是使用substring(),但它并不认为子字符串方法是一种有效的选择。通常,就像较长的文本一样,它们更合适。
显然你可以让这个更复杂,例如:
您也可以不使用任何表达方式,或者可能只使用非常简单的表达方式,以使以后管理流程的人员保持简单。您只需要将表达式转录为流连接器。
但是我相信这可以满足您的要求,即(当您说“在 Power Automate 中执行此操作一次”时)读为一次性完成。
【讨论】: