将串联文本转换为表中的列

问题描述

因此,我继承了PowerApp的这种野兽,它做的相对简单,可以收集对应用程序中创建的动态测验的响应。操作员创建问题(将项目添加到SPO列表中),然后将测验发送给其他人,然后他们去PowerApp中回答。

因为问题是一时兴起的,或者因为PowerApps无法即时创建新的数据源或无法操纵它使用的数据源,所以QnA对不是每个问题/答案对都有一列被连接成一个巨大的纯文本块,并被推送到一个单独的SPO列表中的一列中,该列表包含以下格式的响应:

问题:Question1文本?答案:答案1文字|问题:Question2文字?答案:Answer2文字等,等等。

我已经找到了需要将正则表达式拆分为QnA对的正则表达式(拆分为条形字符),然后将每个QnA对本质上拆分为2D数组(无论如何,在JavaScript中,我都将拆分为正则表达式/((\?|\.)( Answer: ))/,因为问题当然可以以句号或问号结尾。

由于PowerApps的功能引擎既怪异又拜占庭,我无法弄清楚的是如何使用该正则表达式将那个blob转换成可以输出到应用程序中的表,以便我的操作员可以将数据提取到更多内容中有用。

编辑1:

靠近一点。使用以下功能,我可以获得2D集合:

ClearCollect(
    QnAPairs,ForAll(
        'ResponsesList',Split(
           'ResponsesList'[@Answers],"|"
        )
    )
);

对于如何像可以添加到新表中的键/值对一样对待QnA集合中的每个结果,仍然不知所措。

TL; DR?

如何转弯

Name            | Date     | Answers
Person McPerson | mm/dd/yy | Question: Question1 Text? Answer: Answer1 Text | Question: Question2 Text? Answer: Answer2 Text,etc.,etc.

进入

Name            | Date     | Question1 Text | Question2 Text | ...QuestionN Text
Person McPerson | mm/dd/yy | Answer1 Text   | Answer2 Text   | ...Answer2 Text

解决方法

如果要向操作员显示问题/答案(例如,在画廊中),则需要一个结构,该结构的问题为而不是列,因此您的结构应为有点像这样:

Name            | Date       | QuestionsAndAnswers
Person McPerson | mm/dd/yyyy | <table>

<table>的各个问题和答案将作为行。您可以使用以下表达式创建该新结构:

    ClearCollect(
        QnAPairs,DropColumns(
            AddColumns(
                ResponsesList,"QuestionsAndAnswers",MatchAll(Answers,"Question:\s?(?<question>[^\?]+)\?\s?Answer\s?:\s?(?<answer>[^|]+)")),"Answers"))

因此,在您的应用中,如果您有一个列出所有被调查者的商品,这些商品的Items属性设置为QnAPairs,那么您可以拥有第二个画廊,其Items属性设置为Gallery1.Selected.QuestionsAndAnswers,它将显示对选择的人。

请注意,您不需要单独的收藏集;如果您将第一个图库的Items属性设置为原始数据源(ResponseList),则可以将第二个图库的Items属性设置为

MatchAll(
    Gallery1.Selected.Answers,"Question:\s?(?<question>[^\?]+)\?\s?Answer\s?:\s?(?<answer>[^|]+)")

它将显示所选人员的答案。

您可以在https://carlosfigueirapastorage.blob.core.windows.net/public/StackOverflow63425784.msapp上找到显示此策略的应用。要打开它,请将其保存在本地,然后转到https://create.powerapps.com,依次选择“打开”,“浏览”,然后找到您保存的文件。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...