返回列表 上一主題 發帖

[分享] 正則表達式(bosco_yip 原創)

[分享] 正則表達式(bosco_yip 原創)

正則表達式
給參考 :

問題 : 求一字符串字母個數
A1= ascd2G34dH_漢字!ya,不區分大小寫。答案是9

1] 函數解法 :

=SUMPRODUCT(--(ABS(CODE(MID(UPPER(A1),ROW(INDIRECT("1:"&LEN(A1))),1))-77.5)<13))

2] 用"正則表達式" (Regular Expression), 寫的自訂函數 :

Function CountAlpha(Mystr)
Dim RegExp As Object
Set RegExp = CreateObject("vbscript.regexp")
RegExp.Global = True
RegExp.ignorecase = True
RegExp.Pattern = "[^a-zA-Z]"
CountAlpha = Len(RegExp.Replace(Mystr.Value, ""))
End Function
學海無涯_不恥下問

=SUMPRODUCT(LEN(A1)-LEN(SUBSTITUTE(UPPER(A1),CHAR(ROW(65:90)),)))
不知道有沒有漏算..

TOP

回復 2# toomellowhaw


    中文字及特殊符號呢?
學海無涯_不恥下問

TOP

問題的原意不是只要算英文字母數嗎?..還是我誤會了?

TOP

回復 4# toomellowhaw


    抱歉!是我一時看錯題意
學海無涯_不恥下問

TOP

呵,沒關係
在這兒逛逛,看看一些以前的文章,常能挖到寶..
看到一些題目,想試試自己能不能解,
練一練函數的用法,還需要大家多多指教,
如果有缺失或考慮不周全之處,務請指正,感恩..

TOP

我也是由bosco_yip 指導初識正則表達式的。

TOP

本帖最後由 asimov 於 2010-9-26 01:05 編輯

回復 2# toomellowhaw


toomellowhaw兄用取代的方式很有啟發性
收下學習了,謝謝


Hsieh 版主的函數解法似乎少了 "&"
=SUMPRODUCT(--(ABS(CODE(MID(UPPER(A1),ROW(INDIRECT("1:"&LEN(A1))),1))-77.5)<13))
機器人三大定律-保護人類、服從命令、保護自己
我的三大定律-生命、生存、生活

TOP

感觉正则式其实在EXCEL应用起来的话功能是相当强大的, 只是其自定义函数的编写规则似乎难懂……
只有想不到的,
没有做不到的.

TOP

回復 2# toomellowhaw

如字串是   "aA123bB"
=SUMPRODUCT(LEN(A1)-LEN(SUBSTITUTE(UPPER(A1),CHAR(ROW(65:90)),))) 算出 2
(算出多少英文字母不分大小寫)

=SUMPRODUCT(--(ABS(CODE(MID(UPPER(A1),ROW(INDIRECT("1:"&LEN(A1))),1))-77.5)<13))  算出 4
(算出多少英文字母不分大小寫)
{...} 表示需要用 CTRL+SHIFT+ENTER 三鍵輸入公式

TOP

        靜思自在 : 看別人不順眼,是自己修養不夠。
返回列表 上一主題