2014-12-18 6 views
1

Я не помню, как SAS справляется с этими специальными символами. Любые встроенные функции?Как проверить, содержит ли строка апостроф

например

a = New Year's Day, я должен использовать что-то вроде index(a, 'New Year's Day') > 0?

+0

Вы хотите проверить, содержит ли строка апостроф или нет? – NEOmen

ответ

6

Ключом к этому вопросу является маскировка апострофа в кавычках. Если вы хотите, чтобы искать вхождения одного апострофа, вы можете скрыть его с двойным апострофом:

Ищут одиночных апострофы

data _NULL_; 
    a="New Year's Day"; 
    b=index(a,"'"); 
    put b=; 
run; 

Сингла апостроф передается в качестве второго аргумента в индекс функция, используя двойные кавычки.

Ищете двойные кавычки

data _NULL_; 
    a='They said, "Happy New Year!"'; 
    b=index(a,'"'); 
    put b=; 
run; 

На этот раз, двойные кавычки устанавливается в одинарные кавычки, когда передаются функции индекса

1

Используйте «find», как показано ниже, чтобы узнать, что вы ищете, есть ли в строке или нет. Если возвращаемое значение больше, чем> 0, то апостроф или все, что вы ищете, есть, иначе нет.

  • СравниваемаяСтрока - где вы хотите посмотреть

  • Следующая СравниваемаяСтрока является "'" - в кавычках, что вы ищете, в ваш случай апострофа


data _null_; 
TestString="New year's day"; 
IsItThere=find(TestString,"'"); 
put IsItThere=; 
run; 

http://support.sas.com/documentation/cdl/en/lrdict/64316/HTML/default/viewer.htm#a002267763.htm

3

mjsqu и NeoMental покрыли основной случай хорошо, но в в специальном случае, когда у вас нет возможности использовать " (например, вам необходимо предотвратить разрешение макропеременной), вы можете удвоить апостроф:

data _null_; 
    a='MerryXmas&HappyNewYear''s'; *here need single quotes or a macro quoting function; 
    b=find(a,"'"); *here do not need to mask ampersand resolution; 
run; 

Конечно, вы также можете использовать %nrstr, чтобы избежать разрешения, но есть случаи реальной жизни, когда это иногда необходимо. Это работает с "" аналогичным образом (два "" становятся одним персонажем ").

Смежные вопросы