清洁电话号码字符串

时间:2014-10-28 20:56:35

标签: string imacros

我有类似的东西

TAG POS=1 TYPE=INPUT:TEXT FORM=ID:crm_case_add ATTR=ID:CrmCasePhoneNumber EXTRACT=TXT

所有电话号码均采用以下格式:800-128-1990或(800)128-1981或291 399 5913

我想要纯文本,如8002893884.我该怎么做?

2 个答案:

答案 0 :(得分:0)

只需将以下行添加到您的宏中:

SET !EXTRACT EVAL("'{{!EXTRACT}}'.replace(/[-()\\s]/g,'')")

答案 1 :(得分:0)

对于那些希望用SQL做的人

我使用功能清理电话号码,这将修复所有电话号码问题或清除字段。如果为空,则返回Null(防止错误)

Print'/*Fix Phone Numbers Call*/'
Update tblTemp
    Set Phone = dbo.fnPhoneFix(tblTemp.Phone)
From tblTemp

要创建功能,请使用以下代码:

CREATE FUNCTION [dbo].[fnPhoneFix](@PhoneOld VarChar(20))
    Returns VarChar(10)
AS
    Begin
    Declare @iCnt Int = 0
    Declare @PhoneNew VarChar(15)  = ''

    IF @PhoneOld IS NULL
        RETURN NULL;

    While @iCnt <= LEN(@PhoneOld)
        Begin
            IF Substring(@PhoneOld,@iCnt,1) >= '0' AND Substring(@PhoneOld,@iCnt,1) <= '9'
            Begin
                SET @PhoneNew = @PhoneNew + Substring(@PhoneOld,@iCnt,1)
            End
            Set @iCnt = @iCnt + 1
        End

    If LEN(@PhoneNew) > 10 and Left(@PhoneNew, 1) = '1'
        Set @PhoneNew = RIGHT(@PhoneNew,10);
    Else
        Set @PhoneNew = Left(@PhoneNew,10);

    If LEN(@PhoneNew) <> 10
        Set @PhoneNew ='';
    Return @PhoneNew
End