Power Automate中如何提取URL至首个换行符前的内容?
Power Automate提取首个换行符前URL的解决办法
问题原因
你当前的表达式用'\\n'匹配换行符,但Power Automate中,HTML转文本后的换行符是ASCII控制字符(LF对应char(10),CRLF对应char(13)&char(10)),而非字符串形式的\n(反斜杠+n)。因此indexOf匹配不到目标,返回-1,slice就会截取整个输入内容。
可行解决方法
方法1:用split函数拆分取首个元素(推荐)
直接按实际换行符拆分文本,取第一个元素即可,无需计算索引:
{ "type": "Compose", "inputs": "@split(body('Html_to_text_1'), char(10))[0]", "runAfter": { "Html_to_text_1": [ "Succeeded" ] } }
如果邮件正文的换行是CRLF格式(Windows系统常见),替换分隔符为char(13)&char(10):
{ "type": "Compose", "inputs": "@split(body('Html_to_text_1'), char(13)&char(10))[0]", "runAfter": { "Html_to_text_1": [ "Succeeded" ] } }
方法2:修正indexOf的匹配目标
如果坚持用slice,把匹配的换行符换成实际的控制字符:
{ "type": "Compose", "inputs": "@slice(body('Html_to_text_1'), 0, indexOf(body('Html_to_text_1'), char(10)))", "runAfter": { "Html_to_text_1": [ "Succeeded" ] } }
额外优化:处理多余空格
如果URL前后有空格,可结合trim函数清理:
{ "type": "Compose", "inputs": "@trim(split(body('Html_to_text_1'), char(10))[0])", "runAfter": { "Html_to_text_1": [ "Succeeded" ] } }
验证换行符类型
不确定换行符是LF还是CRLF时,可添加一个Compose步骤验证:
{ "type": "Compose", "inputs": "@contains(body('Html_to_text_1'), char(10))", "runAfter": { "Html_to_text_1": [ "Succeeded" ] } }
返回true说明是LF;若返回false,再测试@contains(body('Html_to_text_1'), char(13)&char(10))。
内容的提问来源于stack exchange,提问作者Rodical
相关产品推荐
相关产品推荐

