📜  SAS字符串

📅  最后修改于: 2021-01-08 14:24:45             🧑  作者: Mango

SAS字符串

在上一主题中,我们了解了SAS变量。现在,在本主题中,我们将学习SAS String及其各种操作。

声明字符串变量

我们可以声明字符串变量及其值,如下例所示。在代码中,我们声明了一个名为String1的字符串变量。

例:

DATA string_example;
   String1 = 'Hello';
RUN;
PROC print data = string_example;
RUN;

在SAS Studio中执行以上代码:

输出:

从输出中可以看到,“ Hello”已存储在字符串变量String1中

一个数据集中可以声明多少个字符串变量?

我们可以在一个数据集中声明多个字符串变量。让我们看下面的例子:

data string_examples;
   String1 = 'Ankit';
   String2 = 'Namrita';
   String3 = 'Preeti';
   String4 = 'Vishal';
   String4  = 'Akanksha';
run;
proc print data = string_examples ;
run;    

在SAS Studio中执行以上代码:

输出:

正如你可以在输出中看到,所有值都存储在字符串变量,即字符串1,字符串,STRING3,串,4,STRING5。

我们可以保持字符串变量的长度吗?

通过使用length关键字,我们可以保持存储容量或字符数或字符串变量的长度。固定长度后,SAS将不会存储超过固定长度的字符。让我们看下面的例子:

DATA string_examples;
LENGTH string1 $ 6 String2 $ 5 String3 $ 4 String4 $ 6 String5 $ 2;
   String1 = 'Ankit';
   String2 = 'Namrita';
   String3 = 'Preeti';
   String4 = 'Vishal';
   String5 = 'Akanksha';
run;
proc print data = string_examples noobs;
run;

在SAS Studio中执行以上代码:

输出:

如您在输出中看到的,所有值都对应一个固定长度。超过固定长度的字符已被删除。

我们可以连接多个字符串变量吗?

我们可以使用Joined_strings语句来连接多个字符串变量。让我们看下面的例子:

DATA string_examples;
    String1 = 'Hello';
   String2 = 'Namrita';
   String3 = 'How';
   String4 = 'are';
   String5 = 'you';
   Joined_strings = String1 ||String2 ||String3 ||String4 ||String5 ;
run;
proc print data = string_examples noobs;
run;

在SAS Studio中执行以上代码:

输出:

如您在输出中看到的,所有字符串都已连接在一起。

各种字符串函数

以下是执行字符串操作的常用语句。

SUBSTRING功能

SUBSTRN语句用于通过使用开始和结束位置来提取子字符串。

句法:

SUBSTRN ('string value' ,p1,p2)

哪里,

  • SUBSTRN:这是用于从字符串提取字符的语句。
  • 字符串值:它是字符串变量的值。
  • p1:它是提取的开始位置。
  • p2是提取的结束位置。

提取有两种情况:

第一种情况:当我们同时提供两个位置时,即开始位置和结束位置。

SAS使用开始位置元素开始提取,使用结束位置元素识别要提取的元素总数。让我们通过一个例子来理解:

例:

data string_examples;
   LENGTH string1 $ 7 ;
   String1 = 'ABCDEFG';
   sub_string1 = substrn(String1,1,4) ;
   /*Extract from position 1, and end when completes total 4 elements */
run;
proc print data = string_examples noobs;
run;

在SAS Studio中执行以上代码:

输出:

从输出中可以看到,提取从位置1(即A)开始,到总共提取了4个元素(即ABCD)时结束。

第二种情况:当我们仅提供一个职位,即开始职位。

在仅提供起始位置,但不是终点位置的情况下,提取由字符串结尾的所有字符。让我们通过一个例子来理解:

data string_examples;
   LENGTH string1 $ 7 ;
   String1 = 'ABCDEFG';
   sub_string1 = substrn(String1,4) ;
   /*Extract from position 4 onwards */
run;
proc print data = string_examples noobs;
run;

在SAS Studio中执行以上代码:

输出:

从输出中可以看到,提取从位置4(即D)开始,并在所有剩余元素(即DEFG)的提取完成时结束。

修剪

TRIMN语句用于从字符串删除尾随空格。

句法:

TRIM('string value');

哪里,

  • TRIM:这是用于从字符串修剪空格的语句。
  • 字符串值:它是需要修剪的字符串变量的值。

让我们通过一个例子来理解:

data string_examples;
   LENGTH string1 $ 6  ;
   String1='ABCD  ';
   length_string1 = lengthc(String1);
   length_trimmed_string = lengthc(TRIM(String1)); 
run;
proc print data = string_examples noobs;
run;

当我们在SAS Studio中运行上述代码时,我们将获得显示TRIM函数结果的输出。

输出:

从输出中可以看到,字符串的长度已从6修剪为4。