Pessoal, estou com uma dúvida. Se eu executo o comando:
expr index "ab" b
O resultado é 2. Agora se executo:
expr index "áb" b
O resultado é 3. Gostaria de saber por que isso ocorre e, no caso de uma lista de strings, algumas contendo acento e outras não, como poderia fazer para não ter essa divergência de resultados?
Aparentemente o expr não suporta UTF-8 -- provavelmente não suporta locale alguma além da padrão ("C" ou "POSIX").
Será que a versão do expr distribuída com o o Plan 9, que supostamente trabalha com UTF-8 universalmente, suporta?
4. Re: expr index [RESOLVIDO]
fdmarpusa Debian
Post recolhido
Enviado em 16/03/2015 - 14:16h
Tentei reproduzir o seu problema no Debian e Red hat e não consegui, sempre da 2.
Red hat
# expr index "áb" b
2
expr --version
expr (GNU coreutils) 8.4
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Written by Mike Parker, James Youngman, and Paul Eggert.
Tentei reproduzir o seu problema no Debian e Red hat e não consegui, sempre da 2.
Quais os valores das suas variáveis de ambiente LANG, LC_CTYPE e LC_ALL?
6. Re: expr index [RESOLVIDO]
paulo1205usa Ubuntu
Post recolhido
Enviado em 17/03/2015 - 10:05h
paulo1205 escreveu:
Será que a versão do expr distribuída com o o Plan 9, que supostamente trabalha com UTF-8 universalmente, suporta?
Eu instalei o pacote plan9-base no Ubuntu, e ele não traz o expr.
Para referência, eis a listagem de um programinha que faz o papel da função index, com suporte a caracteres acentuados, em C (com a diferença de que os offsets começam a ser contados em 0, em vez de 1, e -1 indica que o padrão não foi encontrado).
$ expr --version
expr (GNU coreutils) 8.22
Copyright (C) 2013 Free Software Foundation, Inc.
Licença GPLv3+: GNU GPL versão 3 ou posterior <http://gnu.org/licenses/gpl.html>
Este é um software livre: você é livre para alterá-lo e redistribuí-lo.
NÃO HÁ GARANTIA, na máxima extensão permitida pela lei.
Escrito por Mike Parker, James Youngman e Paul Eggert.