powerbi - 自定义函数 - 对于字符串中的每个字符
问题描述
天,
我正在尝试将一个自定义公式放在一起,它的逻辑非常简单。基本上,对于我传递给它的每个字符串,我希望它删除所有非数字字符并将前导零应用于找到的每个数字(如果数字小于 10)
例如:
function('gi-1/1')应该返回 0101 (或简单地返回 101 作为整数)。'gi-1/3' 将分别返回 0103(或 103)。
我正在努力使用 mcode 实现这一目标,我希望你能帮助我。到目前为止,这是我设法汇总的内容(另外,如果数字< 100,我只想这样做)
let if_order = (if_name) =>
let
Result_1 = Text.Select(if_name, {"0".."9"}) as number,
Result_2 = if Result_1 < 100 then Text.Combine({Text.Start(Result_1, 1), "0", Text.Middle(Result_1,1)}) else Result_1
in
Result_2
in
if_order
我得到的错误非常令人困惑。基本上它是在说:
“我们无法将值“11”转换为数字类型”
希望这是有道理的。
解决方案
问题是Text.Select
返回文本,但您要求它是一个数字。您需要更明确地进行转换。
试试这个修改(将结果输出为文本):
let if_order = (if_name) =>
let
Result_1 = Text.Select(if_name, {"0".."9"}),
Result_2 = if Number.FromText(Result_1) < 100
then Text.Combine({Text.Start(Result_1, 1), "0", Text.Middle(Result_1,1)})
else Result_1
in
Result_2
in
if_order
如果你想返回一个整数,你可以使用数学而不是字符串操作:
let if_order = (if_name) =>
let
Result_1 = Number.FromText(Text.Select(if_name, {"0".."9"})),
Result_2 = if Result_1 < 100
then 100 * Number.IntegerDivide(Result_1, 10)
+ Number.Mod(Result_1, 10)
else Result_1
in
Result_2
in
if_order
推荐阅读
- sql - SQL/Doctrine - 使用 AND 过滤结果(多对多)
- angular - ng2-search-filter 在离子 4 中给出错误
- datetime - 类 ClockTriggerBuilder:特定日期和时间(仅一次)Google Sheet 脚本中的触发器每分钟不断重复执行
- react-hooks - 设置状态完成后如何调用函数(React Hooks)
- c# - 如何在另一个数据库中创建模式
- python - OSError:118 与 esp32
- git - Visual Studio 2019“推送到远程存储库时遇到错误:无法推送到远程存储库...”
- .net - 无法为 '.NETCoreApp,Version=v3.1 解析'Microsoft.EntityFrameworkCore (>= 3.1.7)'
- python - 在 Pandas 中创建每周个人资料
- html - 尽管将位置更改为静态,但 CSS 导航栏仍固定在顶部