摘要:len clean trim substitute 函数
问题来源:https://zhidao.baidu.com/question/69063348.html
问题描述:给定一个字符串,求出字符串的字符个数。
例如:在excel中输入
China cfbgc 油田生产\LDW\LD5-2\3#发电机
这个字符串,判断其字符个数。
解:
利用len(T)和lenb(T)函数求出结果如下:
显然可以看出
1、两个函数均统计了空格
2、len(T)函数将汉字作为一个字符
3、lenb(T)函数将汉字作为两个字符
“len面向使用单字节字符集 (SBCS) 的语言, LENB 面向使用双字节字符集 (DBCS) 的语言”
拓展:
如果想统计字段里面的去掉空格的字符总数?或者,问题等价于:如何去掉字符串里的空格,之后利用len(T)函数和lenb(T)函数进行统计。
clean(T)函数、trim(T)、substitute(text,old_text,new_text,instance_num)函数的含义及用法:
trim(T)函数:“TRIM 函数设计用于清除文本中的 7 位 ASCII 空格字符(值 32)。在 Unicode 字符集中,有一个称为不间断空格字符的额外空格字符,其十进制值为 160。该字符通常在网页中用作 HTML 实体 。TRIM 函数本身不删除此不间断空格字符。有关如何清除文本中这两种空格字符的示例,请参阅删除文本中的空格和非打印字符。”
clean(T)函数:“ CLEAN 函数被设计为删除文本中 7 位 ASCII 码的前 32 个非打印字符(值为 0 到 31)。在 Unicode 字符集 (Unicode:Unicode Consortium 开发的一种字符编码标准。该标准采用多(于一)个字节代表每一字符,实现了使用单个字符集代表世界上几乎所有书面语言。)中,有附加的非打印字符(值为 127、129、141、143、144 和 157)。CLEAN 函数自身不删除这些附加的非打印字符。有关如何删除文本中附加的非打印字符的示例,请参阅删除文本中的空格和非打印字符。”
substitute(text,old_text,new_text,instance_num)函数:
Text 为需要替换其中字符的文本,或对含有文本的单元格的引用。
Old_text 为需要替换的旧文本。
New_text 用于替换 old_text 的文本。
Instance_num 为一数值,用来指定以 new_text 替换第几次出现的 old_text。如果指定了 instance_num,则只有满足要求的 old_text 被替换;否则将用 new_text 替换 Text 中出现的所有 old_text。
相关待理解的概念:“单字节字符集 (SBCS) ”、“双字节字符集 (DBCS) ”、“ASCII码”、“非打印字符”、“Unicode 字符集”、“前导、尾部或多个嵌入空格字符(Unicode 字符集 (Unicode:Unicode Consortium 开发的一种字符编码标准。该标准采用多(于一)个字节代表每一字符,实现了使用单个字符集代表世界上几乎所有书面语言。)值 32 和 160)”、“非打印字符(Unicode 字符集值 0 到 31、127、129、141、143、144 和 157)”、“全角”、“半角”
用法对比举例:
这个例子仅是去掉了半角空格,如果是添加了全角空格,则如下例:
那么,如果想在一个公式里面去掉全角空格和半角空格,怎么办呢?利用公式的嵌套
待完善:clean(T)函数的具体应用举例
拓展:
从上例看到全角半角的概念,这涉及到数据的规范化这方面,在实际中遇到过输入全角的数字全角的符号,这时需要将全角的数字符号转化为半角的数字符号。
参考我自己整理的函数:
http://blog.csdn.net/archer_jake/article/details/55045715
那么概念:单字节字符集SBCS和双字节字符集DBCS什么意思?
可以参考:
第二章:Windows编程之Unicode简介
http://c.biancheng.net/cpp/u/window2/
拓展引申:
现实场景:“用户可能由于不慎添加额外空格字符而导致录入错误,或者从外部源导入的文本数据可能包含在文本中嵌入的非打印字符。由于这些字符不容易引起注意,可能会导致难于理解的意外结果”