1

Crystal レポートで作業していて、電話番号フィールドをフォーマットする必要があります。私が扱っているデータはやや混乱しており、正しくフォーマットされた数値がいくつかあります

(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

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 に答える