2012-10-31 60 views
2

嗨,我是Crystal Reports中的新成員,我正在使用Crystal Reports 2008,我想知道如何刪除字符串中的字母字符,並且只保留數字。有這個功能嗎?刪除Crystal Report中的字母

例如:點231 /點323/USP 342 輸出:231/323/342

謝謝, Captain16

+0

你有沒有考慮過使用正則表達式? – craig

+0

你使用什麼數據庫? – craig

回答

3

使用以下公式

stringvar str; 
stringvar str1; 
numbervar counter; 
numbervar leng; 

leng := len({Your_Field}); 
if leng>0 then 
(
    for counter := 1 to leng do 
    (
     If (Mid({Your_Field}, counter, 1)) in "a" to "z" Then 
     (
      str1:=str1 + Mid({Your_Field}, counter, 1) 
     ) 
     else 
     (
      str := str + Mid({Your_Field}, counter, 1) 
     ) 
    ); 
str 
) 


這裏str將得到非字母,而str1將只給出您給定字符串中的字母。 {Your_Field}可以是你的字段或包含字符串的參數。並通過打印str字母可以刪除...

231/323/342這是我得到您輸入的輸出!

希望這會有所幫助,嘗試並找回結果!

+0

哇,它的作品!非常感謝.. – Captain16

+0

這就是我的榮幸! –

0

對不起,我不能評論哈里哈蘭Anbazhagan的代碼(我沒有足夠的聲譽,似乎)。這是很好的代碼,但我會添加LCASE來捕捉所有的字母。

If LCASE(Mid({?sample}, counter, 1)) in "a" to "z" Then 

如果您只想識別數字,還有一個IsNumeric()函數。

+0

感謝您的好建議!但默認情況下,我的代碼刪除大寫字母。提問人員Captain16只想從給定的字符串中只刪除字母。因此可以通過我的代碼來實現。但是,你可以幫助我在'a'到'z'中的If(Mid({Your_Field},counter,1))中添加'NOT'然後'代碼?不必要的我使用其他情況,因爲我不能'如果'中使用'NOT'。 –

+1

我有機會嘗試你的代碼......很好!我不知道它理解大小寫。我想如果你想擺脫ELSE,你可以在「a」到「z」中做'If NOT(Mid({Your_Field},counter,1))然後'。但我認爲你很好,你可以看到你刪除了什麼。 –