首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >字符串不是数字。

字符串不是数字。
EN

Stack Overflow用户
提问于 2015-03-27 14:48:01
回答 1查看 1.9K关注 0票数 0

当试图对字段运行Mod公式时出现问题。我一直收到错误“字符串不是数字”,到目前为止,我还无法让ToNumber正确地格式化字段。该字段是通过添加一个静态值和三个已填充的字段生成的。任何帮助都将不胜感激。

组合字段和pads

代码语言:javascript
复制
StringVar strMICR;
StringVar strMICRLINE;


strMICRLINE := Chr(13) & "0603250694";
strMICRLINE := strMICRLINE & Right("000000" & Trim(Split({CUST.C_ID_ALPHA},"-")[1]),6);
strMICRLINE := strMICRLINE & Right("00000000" & ToText({STMT.STMT_NUMBER},0,""),8);
strMICRLINE := strMICRLINE & Right("0000000000" & Replace(ToText({@Total},2,""),".",""),10);


//Uncomment below to test Mod10 Check-digit
//strMICR := mod10("0603250694084469108961440000127874");

//IF NumericText (strMICRLINE) 
//THEN ToNumber (strMICRLINE);

Mod10 (strMICRLINE);

MOD10函数

代码语言:javascript
复制
Function (StringVar input_number)

input_number := replace(input_number, " ", "");

numbervar i := length(input_number);
numbervar sum_val := 0;

stringvar position := "odd";

do (
    if position = "odd" then (
        sum_val := sum_val + 3*tonumber(input_number[i]);
        position := "even" )
    else (
        sum_val := sum_val + tonumber(input_number[i]);
        position := "odd" )
    ;

    i := i-1
)  while i > 0;

numbervar remainder_val := Remainder(sum_val, 10);

numbervar check_digit := if remainder_val = 0 then 0 else (10-remainder_val) ;

input_number + ToText(check_digit, 0)
EN

回答 1

Stack Overflow用户

发布于 2015-03-27 15:23:35

您正在尝试对一个不是数字的字符串调用toNumber(),因此无法转换。您需要首先从字符串中删除所有非数字字符。

代码语言:javascript
复制
//Formula sample to strip non-numeric characters
local stringvar input := "78906-adf0asdf-234";
local stringvar output;
local numbervar i;

for i:=1 to length(input) do
  if numerictext(input[i]) then output:=output&input[i];

output

然后,我强烈建议您使用内置的mod函数,而不是滚动自己的函数。

代码语言:javascript
复制
toNumber({@NumericTextOnly}) mod 10
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29303486

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档