提取SAS中第二个出现的字符串

提取SAS中第二个出现的字符串,sas,find,substr,Sas,Find,Substr,我有以下带有货币和金额字段的文本 交易货币为美元,金额为200.00;交易货币为欧元,金额为150.00 我需要创建四个变量tran1,amt1,tran2和amt2变量 Tran1 amt1 Tran2 amt2 USD 200 EUR 150 我使用了substr和find函数,但它只是第一次出现 Tran1=substr(string,find(string,”transacrioncurrency”)+21,3); Amt1=substr(string,find(st

我有以下带有货币和金额字段的文本

交易货币为美元,金额为200.00;交易货币为欧元,金额为150.00

我需要创建四个变量
tran1
amt1
tran2
amt2
变量

Tran1 amt1 Tran2 amt2
USD    200  EUR   150
我使用了
substr
find
函数,但它只是第一次出现

 Tran1=substr(string,find(string,”transacrioncurrency”)+21,3);

 Amt1=substr(string,find(string,”the  amount is”)+12,5);

要查找第一个引用位置之后的第二个引用,请执行以下操作:

data f;
p="The transaction currency is USD and the amount is 200.00 The transaction currency is EUR and the amount is 150.00";
p1=find(p,"The transaction currency",1);
Tran1=substr(p,p1+28,3);
p2=find(p,"the amount is",1);
 Amt1=substr(p,p2+14,6);

 p3=find(p,"The transaction currency",p1+1);
Tran2=substr(p,p3+28,3);
p4=find(p,"the amount is",p2+1);
 Amt2=substr(p,p4+14,6);
;

run;
结果:

p                 p1    Tran1   p2  Amt1    p3  Tran2   p4  Amt2
The transacti..     1   USD     37  200.00  58  EUR     94  150.00

这里有一种使用
输入
语句的替代方法,如果文本位于外部文件中,则可以使用该方法:

data example;
input @'is '  tran1 $3. @;
input @'is '  amt1 :8. @;
input @'is '  tran2 $3. @;
input @'is '  amt2 8.;
datalines;
The transaction currency is USD and the amount is 200.00 The transaction currency is EUR and the amount is 150.00
;
run;