Functions and CALL Routines |
Category: | Character |
Restriction: | I18N Level 1 |
Tip: | Use the KINDEXC function in SAS National Language Support (NLS): Reference Guide instead to write encoding independent code. |
Syntax |
FINDC(string <, charlist>) |
FINDC(string, charlist <, modifiers>) |
FINDC(string, charlist, modifier(s) <, startpos>) |
FINDC(string, charlist, <startpos>, <modifiers)> |
is a character constant, variable, or expression that specifies the character string to be searched.
Tip: | Enclose a literal string of characters in quotation marks. |
is an optional constant, variable, or character expression that initializes a list of characters. FINDC searches for the characters in this list provided that you do not specify the K modifier in the modifier argument. If you specify the K modifier, FINDC searches for all characters that are not in this list of characters. You can add more characters to the list by using other modifiers.
is an optional character constant, variable, or expression in which each character modifies the action of the FINDC function. The following characters, in upper- or lowercase, can be used as modifiers:
Tip: | If modifier is a constant, then enclose it in quotation marks. Specify multiple constants in a single set of quotation marks. Modifier can also be expressed as a variable or an expression. |
is an optional numeric constant, variable, or expression having an integer value that specifies the position at which the search should start and the direction in which to search.
Details |
The FINDC function searches string for the first occurrence of the specified characters, and returns the position of the first character found. If no characters are found in string, then FINDC returns a value of 0.
The FINDC function allows character arguments to be null. Null arguments are treated as character strings that have a length of zero. Numeric arguments cannot be null.
If startpos is not specified, FINDC begins the search at the end of the string if you use the B modifier, or at the beginning of the string if you do not use the B modifier.
If startpos is specified, the absolute value of startpos specifies the position at which to begin the search. If you use the B modifier, the search always proceeds from right to left. If you do not use the B modifier, the sign of startpos specifies the direction in which to search. The following table summarizes the search directions:
Comparisons |
The FINDC function searches for individual characters in a character string, whereas the FIND function searches for substrings of characters in a character string.
The FINDC function and the INDEXC function both search for individual characters in a character string. However, the INDEXC function does not have the modifier nor the startpos arguments.
The FINDC function searches for individual characters in a character string, whereas the VERIFY function searches for the first character that is unique to an expression. The VERIFY function does not have the modifier nor the startpos arguments.
Examples |
This example searches a character string and returns the characters that are found.
data _null_; string = 'Hi, ho!'; charlist = 'hi'; j = 0; do until (j = 0); j = findc(string, charlist, j+1); if j = 0 then put +3 "That's all"; else do; c = substr(string, j, 1); put +3 j= c=; end; end; run;
SAS writes the following output to the log:
j=2 c=i j=5 c=h That's all
This example searches a character string and returns the characters that are found. The I modifier is used to ignore the case of the characters.
data _null_; string = 'Hi, ho!'; charlist = 'ho'; j = 0; do until (j = 0); j = findc(string, charlist, j+1, "i"); if j = 0 then put +3 "That's all"; else do; c = substr(string, j, 1); put +3 j= c=; end; end; run;
SAS writes the following output to the log:
j=1 c=H j=5 c=h j=6 c=o That's all
This example searches a character string and returns the characters that do not appear in the character list.
data _null_; string = 'Hi, ho!'; charlist = 'hi'; j = 0; do until (j = 0); j = findc(string, charlist, "k", j+1); if j = 0 then put +3 "That's all"; else do; c = substr(string, j, 1); put +3 j= c=; end; end; run;
SAS writes the following output to the log:
j=1 c=H j=3 c=, j=4 c= j=6 c=o j=7 c=! That's all
This example searches for the three characters h, i, and blank. The characters h and i are in lowercase. The uppercase characters H and I are ignored in this search.
data _null_; whereishi=0; do until(whereishi=0); whereishi=findc('Hi there, Ian!','hi ',whereishi+1); if whereishi=0 then put "The End"; else do; whatfound=substr('Hi there, Ian!',whereishi,1); put whereishi= whatfound=; end; end; run;
SAS writes the following output to the log:
whereishi=2 whatfound=i whereishi=3 whatfound= whereishi=5 whatfound=h whereishi=10 whatfound= The End
This example searches for the four characters h, i, H, and I. FINDC with the i modifier ignores character case during the search.
data _null_; whereishi_i=0; do until(whereishi_i=0); variable1='Hi there, Ian!'; variable2='hi'; variable3='i'; whereishi_i=findc(variable1,variable2,variable3,whereishi_i+1); if whereishi_i=0 then put "The End"; else do; whatfound=substr(variable1,whereishi_i,1); put whereishi_i= whatfound=; end; end; run;
SAS writes the following output to the log:
whereishi_i=1 whatfound=H whereishi_i=2 whatfound=i whereishi_i=5 whatfound=h whereishi_i=11 whatfound=I The End
This example searches for the two characters h and i. FINDC with the t modifier trims trailing blanks from the string argument and the characters argument.
data _null_; whereishi_t=0; do until(whereishi_t=0); expression1='Hi there, '||'Ian!'; expression2=kscan('bye or hi',3)||' '; expression3=trim('t '); whereishi_t=findc(expression1,expression2,expression3,whereishi_t+1); if whereishi_t=0 then put "The End"; else do; whatfound=substr(expression1,whereishi_t,1); put whereishi_t= whatfound=; end; end; run;
SAS writes the following lines output to the log:
whereishi_t=2 whatfound=i whereishi_t=5 whatfound=h The End
This example searches for all of the characters in the string, excluding the characters h, i, H, and I. FINDC with the v modifier counts only the characters that do not appear in the characters argument. This example also includes the i modifier and therefore ignores character case during the search.
data _null_; whereishi_iv=0; do until(whereishi_iv=0); xyz='Hi there, Ian!'; whereishi_iv=findc(xyz,'hi',whereishi_iv+1,'iv'); if whereishi_iv=0 then put "The End"; else do; whatfound=substr(xyz,whereishi_iv,1); put whereishi_iv= whatfound=; end; end; run;
SAS writes the following output to the log:
whereishi_iv=3 whatfound= whereishi_iv=4 whatfound=t whereishi_iv=6 whatfound=e whereishi_iv=7 whatfound=r whereishi_iv=8 whatfound=e whereishi_iv=9 whatfound=, whereishi_iv=10 whatfound= whereishi_iv=12 whatfound=a whereishi_iv=13 whatfound=n whereishi_iv=14 whatfound=! The End
See Also |
|
Copyright © 2011 by SAS Institute Inc., Cary, NC, USA. All rights reserved.