You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Power Apps中使用MatchAll将特定字符串转换为数据表

从非标准字符串转换为Power Apps数据表

直接可用的解决方案

先清理原始字符串的格式问题,再通过MatchAll按行捕获完整对象,提取关联字段:

// 先获取原始文本
Set(RawData; Label40_1.Text);

// 清理格式:移除多余的数组括号和错误分隔符,统一为可匹配的格式
Set(CleanedData; Substitute(Substitute(RawData; "]"";""["; ",";); "["; "";); "]"; "";));

// 构建目标集合
ClearCollect(
    ResultAG;
    ForAll(
        // 匹配每个完整的对象块
        MatchAll(CleanedData; "\{.*?\}");
        With(
            {
                // 提取每个字段的原始值
                MessungVal: Value(Match(FullMatch; """Messung"":(?<val>\d+)").val);
                TiegelLeerVal: Value(Substitute(Match(FullMatch; """Tiegel leer"":""(?<val>[^""]*)""").val; ";"; "."));
                TiegelProbeVal: Value(Substitute(Match(FullMatch; """Tiegel Probe"":""(?<val>[^""]*)""").val; ";"; "."));
                TiegelAscheVal: Value(Substitute(Match(FullMatch; """Tiegel Asche"":""(?<val>[^""]*)""").val; ";"; "."))
            };
            // 构造数据表行
            {
                Messung: MessungVal;
                Tiegel_leer: TiegelLeerVal;
                Tiegel_Probe: TiegelProbeVal;
                Tiegel_Asche: TiegelAscheVal
            }
        )
    )
)

简化版:单正则直接捕获所有字段

如果不想做前置清理,也可以用一个正则直接匹配每个对象的所有字段:

ClearCollect(
    ResultAG;
    ForAll(
        MatchAll(
            Label40_1.Text;
            """Messung"":(?<Messung>\d+);""Tiegel leer"":""(?<Tiegel_leer>[^""]*)"";""Tiegel Probe"":""(?<Tiegel_Probe>[^""]*)"";""Tiegel Asche"":""(?<Tiegel_Asche>[^""]*)"""
        );
        {
            Messung: Value(Messung);
            Tiegel_leer: Value(Substitute(Tiegel_leer; ";"; "."));
            Tiegel_Probe: Value(Substitute(Tiegel_Probe; ";"; "."));
            Tiegel_Asche: Value(Substitute(Tiegel_Asche; ";"; "."))
        }
    )
)

关于MatchAll的核心逻辑

  • MatchAll(文本, 正则)返回一个数据表,每行对应一个匹配结果,包含FullMatch(完整匹配字符串)和你用(?<字段名>匹配规则)定义的捕获组字段。
  • 你之前的错误是单独提取每个字段,得到的是四个独立的单列表,无法关联行。正确逻辑是先按完整对象(行)匹配,再在每个对象内提取所有字段,这样每行的字段自然对应。
  • 正则里的[^""]*表示匹配所有非引号的字符,确保只捕获字段值;.*?是非贪婪匹配,避免把多个对象当成一个匹配项。

处理德语小数格式

因为德语环境用;作为小数分隔符,所以用Substitute(值; ";"; ".")转换为Power Apps可识别的数值格式,再用Value()转成数字类型。

内容的提问来源于stack exchange,提问作者Thomas Schmidt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 18:31:49