1

我正在处理水晶报表,需要格式化电话号码字段。我正在使用的数据有些混乱,并且有些数字格式正确

(111)111-1111

还有一些 1111111111

我正在尝试编写这个公式来删除括号并重新格式化字符串。这是我到目前为止所拥有的,不知道为什么这不起作用

StringVar phone = Replace({AssessorTrainingReport;1.Phone1},"(",""); 
phone := Replace({AssessorTrainingReport;1.Phone1},")","");
Picture (CStr (phone), "(xxx) xxx-xxxx");
4

5 回答 5

2

第二个替换调用应该对第一个替换调用的 stringvar 结果进行操作...

phone := Replace(phone,")","");

另外,你也需要删除-吗?

于 2012-08-06T19:48:08.617 回答
1

// 试试这个,在这种情况下,它允许你替换任何你需要的东西。

    StringVar phone:= {yourTable.field};
    phone:= Replace(phone,"(","*");
    mid(phone, 1);
    replace(mid(phone, 1),")", "* "); 
于 2013-11-15T17:24:50.023 回答
1

尝试这个...

右键单击电话号码字段,然后从格式字段选择常用选项卡中选择格式字段。在显示字符串下单击 X-2 框,然后写公式 -> PICTURE({YOURTABLE.FIELD), "(XXX) XXX-XXXX")

希望这可以帮助!

于 2014-12-01T21:17:31.440 回答
0

如果您的数字可能“搞砸了”,那么您可能需要考虑清理整个字符串(也适用于那些好奇如何在 CR 中完成此操作的人):

local stringvar phonenum := {table.phone_field};
local stringvar out := "";
local numbervar i;
for i:=1 to length(phonenum) do
  (
    if isnumeric(phonenum[i]) then //iterate over the characters in the string...
       out:=out + phonenum[i]; //...and toss out those which are non-numeric
  );

if length(out)<>10 then "Handle the error condition" else picture(out,"(xxx) xxx-xxxx")
于 2012-08-06T21:21:25.967 回答
0

创建一个自定义函数来“补充” Replace() 函数:

// ----------------------------------------------------------------------
// ReplaceEx()
// Author:      Craig Buchanan
// Purpose:     Support an array of find tokens
// Parameters:  text - the string being searched
//              find - an array of characters to be found
//              replacement - value to substitute
// ----------------------------------------------------------------------
Function (Stringvar text, Stringvar Array find, Stringvar replacement)

    local numbervar i;

    For i:=1 To Ubound(find) do (

        text:=Replace(text, find[i], replacement)

    );

    text;

在公式字段中使用自定义函数:

// returns {612) 555-1212
Picture(ReplaceEx("612-555-1212", ["(",")","-"], ""), "(xxx) xxx-xxxx")
于 2012-08-07T19:02:23.560 回答