Проверьте, не являются ли все символы в строке буквенно-цифровыми - PullRequest
1 голос
/ 10 марта 2019

Строка ниже, вероятно, является результатом неправильного вызова API:

_±êµÂ’¥÷“_¡“__‘_Ó ’¥Ï“ùü’ÄÛ“_« “_Ô“Ü“ù÷ “Ïã“_÷’¥Ï “µÏ“ÄÅ“ù÷ “Á¡ê±«“ùã ê¡Û“_ã “__’

Я не уверен, какие строки содержат не алфавитно-цифровые символы, и моя задача - определить, какие строки являются проблемными.

Другая проблема заключается в том, что некоторые не алфавитно-цифровые символы появляются со строками, которые я хотел бы сохранить и искать, например:

This sentence is fine and searchable, but a few non-alphanumeric äóî donäó»t popup

Есть ли способ проверить, если все содержимое строки не является-alphanumeric

1 Ответ

2 голосов
/ 10 марта 2019

Вы можете использовать регулярное выражение, чтобы найти все строки только со стандартными буквенными и числовыми символами, включая запятые, точки, восклицательные и вопросительные знаки, а также пробелы:

clear
input str168 var1
"_±êµÂ’¥÷“_¡“__‘_Ó ’¥Ï“ùü’ÄÛ“_« “_Ô“Ü“ù÷ “Ïã“_÷’¥Ï “µÏ“ÄÅ“ù÷ “Á¡ê±«“ùã ê¡Û“_ã “__’"
"This sentence is fine and searchable, but a few non unicode äóî donäó»t popup"                                                                                     
" This is a regular sentence of course"                                                                                                                                   
" another sentence, but with comma"                                                                                                                                       
" but what happens with question marks?"                                                                                                                                  
" or perhaps an exclamation mark!"                                                                                                                                       
end

generate tag = ustrregexm(var1, "^[A-Za-z0-9 ,.?!]*$")

. list tag, separator(0)

     +-----+
     | tag |
     |-----|
  1. |   0 |
  2. |   0 |
  3. |   1 |
  4. |   1 |
  5. |   1 |
  6. |   1 |
     +-----+

Другая возможность - использовать обычныевыражение для исключения любых строк, которые не имеют буквенных и цифровых символов, решение, которое в этом случае охватывает оба обязательных случая:

clear
input str168 var1
"_±êµÂ’¥÷“_¡“__‘_Ó ’¥Ï“ùü’ÄÛ“_« “_Ô“Ü“ù÷ “Ïã“_÷’¥Ï “µÏ“ÄÅ“ù÷ “Á¡ê±«“ùã ê¡Û“_ã “__’"
"This sentence is fine and searchable, but a few non unicode äóî donäó»t popup"                                                                                     
" This is a regular sentence of course"                                                                                                                                   
" another sentence, but with comma"                                                                                                                                       
" but what happens with question marks?"                                                                                                                                  
" or perhaps an exclamantion mark!"                                                                                                                                       
"¥Ï“ùü’ÄÛ“_« “_Ô“Ü“ù÷ "                                                                                                                          
"¥Ï“ùü’ÄÛ hihuo"                                                                                                                                                
end

generate tag = ustrregexm(var1, "^[^A-Za-z0-9]*$")

list tag, separator(0)

     +-----+
     | tag |
     |-----|
  1. |   1 |
  2. |   0 |
  3. |   0 |
  4. |   0 |
  5. |   0 |
  6. |   0 |
  7. |   1 |
  8. |   0 |
     +-----+
...