linux函数空格,compress函数用法详解

compress函数: 主要用来删除字符串中的特定字符.

1.compress函数的基本形式

compress()

Arguments

source: 指定一个字符串来源

chars: 指定要删除或者保留的字符列表,需用引号

modifiers: 指定修饰符,不区分大小写,用来控制compress 函数。

modifiers指定一个修饰符,函数的具体功能。如:

a 增加(A - Z, a - z)到初始字符里(chars)。

d 增加数字到初始字符里(chars)。

f 增加下划线和字母 (A - Z, a - z) 到初始字符里(chars)。

g 增加图形字符到初始字符里(chars)。

k 不移除初始字符(chars)而是返回这些字符。

l 增加小写字母(a - z)。

n 增加数字、下划线和字母(A - Z, a - z)。

p 增加标点符号。

s 增加空格, 包括空格、水平制表符、垂直制表符、回车符、换行符和换页符。

t 剪掉尾部空格。

u 增加大写字母(A - Z)。

w 增加可印刷的字符。

X 增加十六进制字符

2.compress函数应用举例

例1.删除空格:可以直接省去第二和第三个Arguments,也可以明确将空格加入到字符串列表中。

data _null_;

str='Ab cd EF-123-456';

str1=compress(str);

str2=compress(str," ");

put str1= str2=;

run;

例2.使用修饰符删除小写字母:

将修饰符设定为"l",代表lowcase,即将所有的小写字母加入到要删除的字符列表中;

如不用修饰符"l",也可以直接把所有a-z的小写字母列入要删除的字符串列表当中,效果一样;

本例可以将所有小写字母和大写的"E"从指定的字符串中删除。

data _null_;

str='Ab cd EF-123-456';

str1=compress(str,'E','l');

str2=compress(str,"abcdefghijklmnopqrstuvwxyzE");

put str1= str2=;

run;

例3. 保留字符:只需将"K"或"k"写入修饰符;

保留数字:只需将"D"或"d"写入修饰符,或者在字符串列表中加入所有数字。

本例为保留所有数字和"EF"中的字符。

data _null_;

str='Ab cd EF-123-456';

str1=compress(str,'EF','kd');

str2=compress(str,"EF1234567890",'k');

put str1= str2=;

run;

补充:

1.只有source,移除空格。

2.只有source,chars时,从source中移除chars。

3.source,chars,modifiers都有时,modifiers中的K决定保留还是移除。

无K时,移除chars加上modifiers指定的。

例如:

这两个都是移除数字:

compress(source, "1234567890");

compress(source, , "d");

这两个是移除数字和加减号:

compress(source, "1234567890+-");

compress(source, "+-", "d");

例1:移除日期中的/

data _null_;

a='2017/04/20';;

b=compress(a,'/');

put b;

run;

log窗口的输出结果为: 20170420

例2:移除大写字母和-

data _null_;

x='a 123-456 B-2';

y=compress(x,'-','u');

put y;

run;

log窗口的输出结果为: a 123456 2

例3:移除Tab

data _null_;

x='1 0 0 8 6';

y=compress(x,,'s');

put y;

run;

log窗口的输出结果为: 10086

特殊用法:

compress(source,'k'); 删除字符k

compress(source,'d'); 删除字符d

compress(source,,'d'); 删除数字

compress(source,'kd'); 删除字符kd

compress(source,,'kd'); 只保留数字

compress(source,'KD'); 输出原始字符串

附:常用的修饰符及其意义

a/A 所有拉丁字母,包括 a-z A-Z

l/L 所有小写拉丁字母

u/U 所有大写拉丁字母

k/K 保留字符

d/D 所有数字

f/F 下划线和所有拉丁字母

n/N 下划线,数字和所有拉丁字母

i/G 忽略要删除或保留字符的大小写

s/S 定位符,如空格、tab等

t/T 去掉第一和第二个arguments里的尾部空格

0b1331709591d260c1c78e86d0c51c18.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值