自定义函数 - 对于字符串中的每个字符
Custom function - for each character within a string
你好,
我正在尝试将自定义公式放在一起,它的逻辑非常简单。基本上,对于我传递给它的每个字符串,我希望它删除所有非数字字符并对找到的每个数字应用前导零(如果数字 < 10)
例如:
function('gi-1/1') 应该 return 0101(或者只是 101 作为整数)。分别 'gi-1/3' 将 return 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
return 的文本,但您要求它是一个数字。您需要更明确地进行转换。
试试这个修改(将结果输出为文本):
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
如果你想 return 一个整数,你可以使用数学而不是字符串操作:
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
试试这个
删除所有非数字
拆分成一个列表,附加一个零,重新组合
(TheText as text) =>
let Source = Text.Remove(TheText, { Character.FromNumber(32)..Character.FromNumber(47), Character.FromNumber(58)..Character.FromNumber(255) } ),
done = Text.Combine(List.Transform(Text.ToList(Source ), each "0"&_))
in done
你好,
我正在尝试将自定义公式放在一起,它的逻辑非常简单。基本上,对于我传递给它的每个字符串,我希望它删除所有非数字字符并对找到的每个数字应用前导零(如果数字 < 10)
例如:
function('gi-1/1') 应该 return 0101(或者只是 101 作为整数)。分别 'gi-1/3' 将 return 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
return 的文本,但您要求它是一个数字。您需要更明确地进行转换。
试试这个修改(将结果输出为文本):
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
如果你想 return 一个整数,你可以使用数学而不是字符串操作:
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
试试这个
删除所有非数字 拆分成一个列表,附加一个零,重新组合
(TheText as text) =>
let Source = Text.Remove(TheText, { Character.FromNumber(32)..Character.FromNumber(47), Character.FromNumber(58)..Character.FromNumber(255) } ),
done = Text.Combine(List.Transform(Text.ToList(Source ), each "0"&_))
in done