Previous: Funções e Variáveis para caracteres, Up: stringproc [Contents][Index]

### 73.4 Funções e Variáveis para seqüências de caracteres

Função: sunlisp (lisp_string)

  Converte uma seqüência de caracteres do Lisp em uma seqüência de caracteres do Maxima. (Em geral você pode não precisar dessa função.)

Função: lstringp (obj)

  Retorna `true` se obj is uma seqüência de caracteres do Lisp. (Em geral você pode não precisar dessa função.)

Função: stringp (obj)

  Retorna `true` se obj for uma seqüência de caracteres do Maxima. Veja a introdução para obter exemplos.

Função: charat (seq_caracte, n)

  Retorna o n-ésimo caractere de seq_caracte. O primeiro caractere em seq_caracte é retornado com n = 1.

      (%i1) charat("Lisp",1);
      (%o1)                           L

Função: charlist (seq_caracte)

  Retorna a lsita de todos os caracteres em seq_caracte.

      (%i1) charlist("Lisp");
      (%o1)                     [L, i, s, p]
      (%i2) %[1];
      (%o2)                           L

Função: parsetoken (seq_caracte)

  `parsetoken` converte a primeira ficha em seq_caracte para o correspondente número ou retorna `false` se o número não puder ser determinado. O conjunto de delimitadores para a troca de fichas é `{space, comma, semicolon, tab, newline}`

  Nota de tradução: espaço, vírgula, ponto e vírgula, tabulação e nova linha.

      (%i1) 2*parsetoken("1.234 5.678");
      (%o1)                         2.468

  Para analizar você pode também usar a função `parse_string`. Veja a descrição no arquivo ’share\contrib\eval_string.lisp’.

Função: sconc (expr_1, ..., expr_n)

  Avalia seus argumentos e concatena-os em uma seqüência de caracteres. `sconc` é como `sconcat` mas retorna uma seqüência de caracteres do Maxima.

      (%i1) sconc("xx[",3,"]:",expand((x+y)^3));
      (%o1)             xx[3]:y^3+3*x*y^2+3*x^2*y+x^3
      (%i2) stringp(%);
      (%o2)                         true

Função: scopy (seq_caracte)

  Retorna uma cópia de seq_caracte como uma nova seqüência de caracteres.

Função: sdowncase (seq_caracte)
Função: sdowncase (seq_caracte, início)
Função: sdowncase (seq_caracte, início, fim)

  Como em `supcase`, mas caracteres em caixa alta são convertidos para caracteres em caixa baixa.

Função: sequal (seq_caracte__1, seq_caracte__2)

  Retorna `true` se seq_caracte__1 e seq_caracte__2 tiverem o mesmo comprimento e contiverem os mesmos caracteres.

Função: sequalignore (seq_caracte__1, seq_caracte__2)

  Como em `sequal` mas igonara a caixa alta/baixa.

Função: sexplode (seq_caracte)

  `sexplode` é um apelido para a função `charlist`.

Função: simplode (lista)
Função: simplode (lista, delim)

  `simplode` takes uma `lista` ou expressões e concatena-as em uma seqüência de caracteres. Se nenhum delimitador delim for usado, `simplode` funciona como `sconc` e não utiliza delimitador. delim pode ser qualquer seqüência de caracteres.

      (%i1) simplode(["xx[",3,"]:",expand((x+y)^3)]);
      (%o1)             xx[3]:y^3+3*x*y^2+3*x^2*y+x^3
      (%i2) simplode( sexplode("stars")," * " );
      (%o2)                   s * t * a * r * s
      (%i3) simplode( ["One","more","coffee."]," " );
      (%o3)                   One more coffee.

Função: sinsert (seq, seq_caracte, pos)

  Retorna uma seqüência de caracteres que é uma concatenação de `substring (seq_caracte, 1, pos - 1)`, a seqüência de caracteres seq e `substring (seq_caracte, pos)`. Note que o primeiro caractere está em seq_caracte e está na posição 1.

      (%i1) s: "A submarine."$
      (%i2) sconc( substring(s,1,3),"yellow ",substring(s,3) );
      (%o2)                  A yellow submarine.
      (%i3) sinsert("hollow ",s,3);
      (%o3)                  A hollow submarine.

Função: sinvertcase (seq_caracte)
Função: sinvertcase (seq_caracte, início)
Função: sinvertcase (seq_caracte, início, fim)

  Retorna seq_caracte exceto que cada caractere da posição início até a posição fim está invertido. Se a posição fim não for fornecida, todos os caracteres do início ao fim de seq_caracte são substituídos.

      (%i1) sinvertcase("sInvertCase");
      (%o1)                      SiNVERTcASE

Função: slength (seq_caracte)

  Retorna número de caracteres em seq_caracte.

Função: smake (num, caractere)

  Retorna uma nova seqüência de caracteres repetindo num vezes caractere.

      (%i1) smake(3,"w");
      (%o1)                          www

Função: smismatch (seq_caracte__1, seq_caracte__2)
Função: smismatch (seq_caracte__1, seq_caracte__2, test)

  Retorna a posição do primeiro caractere de seq_caracte__1 no qual seq_caracte__1 e seq_caracte__2 diferem ou `false` em caso contrário. A função padrao de teste para coincidência é `sequal`. Se `smismatch` pode ignorar a caixa alta/baixa, use `sequalignore` como função de teste.

      (%i1) smismatch("seven","seventh");
      (%o1)                           6

Função: split (seq_caracte)
Função: split (seq_caracte, delim)
Função: split (seq_caracte, delim, multiple)

  Retorna a lista de todas as fichas em seq_caracte. Cada ficha é uma seqüência de caracteres não analisada. `split` usa delim como delimitador. Se delim não for fornecido, o caractere de espaço é o delimitador padrão. multiple é uma variável booleana com `true` como valor padrão. Multiplos delimitadores são lidos como um. Essa função é útil se tabulações são gravadas com caracteres de espaço multiplos. Se multiple for escolhido para `false`, cada delimitador é considerado.

      (%i1) split("1.2   2.3   3.4   4.5");
      (%o1)                 [1.2, 2.3, 3.4, 4.5]
      (%i2) split("first;;third;fourth",";",false);
      (%o2)               [first, , third, fourth]

Função: sposition (caractere, seq_caracte)

  Retorna a posição do primeiro caractere em seq_caracte que coincide com caractere. O primeiro caractere em seq_caracte está na posição 1. Para que os caracteres que coincidirem desconsiderem a caixa alta/baixa veja `ssearch`.

Função: sremove (seq, seq_caracte)
Função: sremove (seq, seq_caracte, test)
Função: sremove (seq, seq_caracte, test, início)
Função: sremove (seq, seq_caracte, test, início, fim)

  Retorna uma seqüência de caracteres como seq_caracte mas com todas as subseqüências de caracteres que coincidirem com seq. A função padrão de teste de coincidência é `sequal`. Se `sremove` puder ignorar a caixa alta/baixa enquanto busca por seq, use `sequalignore` como teste. Use início e fim para limitar a busca. Note que o primeiro caractere em seq_caracte está na posição 1.

      (%i1) sremove("n't","I don't like coffee.");
      (%o1)                   I do like coffee.
      (%i2) sremove ("DO ",%,'sequalignore);
      (%o2)                    I like coffee.

Função: sremovefirst (seq, seq_caracte)
Função: sremovefirst (seq, seq_caracte, test)
Função: sremovefirst (seq, seq_caracte, test, início)
Função: sremovefirst (seq, seq_caracte, test, início, fim)

  Como em `sremove` exceto qie a primeira subseqüência de caracteres que coincide com `seq` é removida.

Função: sreverse (seq_caracte)

  Retorna uma seqüência de caracteres com todos os caracteres de seq_caracte em ordem reversa.

Função: ssearch (seq, seq_caracte)
Função: ssearch (seq, seq_caracte, test)
Função: ssearch (seq, seq_caracte, test, início)
Função: ssearch (seq, seq_caracte, test, início, fim)

  Retorna a posição da primeira subseqüência de caracteres de seq_caracte que coincide com a seqüência de caracteres seq. A função padrão de teste de coincidência é `sequal`. Se `ssearch` puder igonorar a caixa alta/baixa, use `sequalignore` como função de teste. Use início e fim para limitar a busca. Note que o primeiro caractere em seq_caracte está na posição 1.

      (%i1) ssearch("~s","~{~S ~}~%",'sequalignore);
      (%o1)                                  4

Função: ssort (seq_caracte)
Função: ssort (seq_caracte, test)

  Retorna uma seqüência de caracteres que contém todos os caracteres de seq_caracte em uma ordem tal que não existam dois caracteres c sucessivos e d seja tal que `test (c, d)` seja `false` e `test (d, c)` seja `true`. A função padrão de teste para ordenaçào é clessp. O conjunto de funções de teste é `{clessp, clesspignore, cgreaterp, cgreaterpignore, cequal, cequalignore}`.

      (%i1) ssort("I don't like Mondays.");
      (%o1)                    '.IMaddeiklnnoosty
      (%i2) ssort("I don't like Mondays.",'cgreaterpignore);
      (%o2)                 ytsoonnMlkIiedda.'

Função: ssubst (nova, antiga, seq_caracte)
Função: ssubst (nova, antiga, seq_caracte, test)
Função: ssubst (nova, antiga, seq_caracte, test, início)
Função: ssubst (nova, antiga, seq_caracte, test, início, fim)

  Retorna uma seqüência de caracteres como seq_caracte exceto que todas as subseqüências de caracteres que coincidirem com antiga são substituídas por nova. antiga e nova não precisam ser de mesmo comprimento. A função padrão de teste para coincidência é para coincidências é `sequal`. Se `ssubst` puder ignorar a cixa alta/baixa enquanto procurando por antiga, use `sequalignore` como função de teste. Use início e fim para limitar a busca. Note que o primeiro caractere em seq_caracte está na posição 1.

      (%i1) ssubst("like","hate","I hate Thai food. I hate green tea.");
      (%o1)          I like Thai food. I like green tea.
      (%i2) ssubst("Indian","thai",%,'sequalignore,8,12);
      (%o2)         I like Indian food. I like green tea.

Função: ssubstfirst (nova, antiga, seq_caracte)
Função: ssubstfirst (nova, antiga, seq_caracte, test)
Função: ssubstfirst (nova, antiga, seq_caracte, test, início)
Função: ssubstfirst (nova, antiga, seq_caracte, test, início, fim)

  Como em `subst` exceto que somente a primeira subseqüência de caracteres que coincidir com antiga é substituída.

Função: strim (seq,seq_caracte)

  Retorna uma seqüência de caracteres como seq_caracte, mas com todos os caracteres que aparecerem em seq removidos de ambas as extremidades.

      (%i1) "/* comment */"$
      (%i2) strim(" /*",%);
      (%o2)                        comment
      (%i3) slength(%);
      (%o3)                           7

Função: striml (seq, seq_caracte)

  Como em `strim` exceto que somente a extremidade esquerda de seq_caracte é recordada.

Função: strimr (seq, seq_caracte)

  Como em `strim` exceto que somente a extremidade direita de seqüência de caracteres é recortada.

Função: substring (seq_caracte, início)
Função: substring (seq_caracte, início, fim)

  Retorna a subseqüência de caracteres de seq_caracte começando na posição início e terminando na posição fim. O caractere na posição fim não é incluído. Se fim não for fornecido, a subseqüência de caracteres contém o restante da seqüência de caracteres. Note que o primeiro caractere em seq_caracte está na posição 1.

      (%i1) substring("substring",4);
      (%o1)                        string
      (%i2) substring(%,4,6);
      (%o2)                          in

Função: supcase (seq_caracte)
Função: supcase (seq_caracte, início)
Função: supcase (seq_caracte, início, fim)

  Retorna seq_caracte exceto que caracteres em caixa baixa a partir da posição início até a posição fim são substituídos pelo correspondente caracteres em caixa alta. Se fim não for fornecido, todos os caracteres em caixa baixa de início até o fim de seq_caracte são substituídos.

      (%i1) load("stringproc")$
      (%i1) supcase("english",1,2);
      (%o1)                        English

Função: tokens (seq_caracte)
Função: tokens (seq_caracte, test)

  Retorna uma lista de fichas, que tiverem sido extrídos de seq_caracte. As fichas são subseqüências de caracteres cujos caracteres satisfazem a uma determinada função de teste. Se o teste não for fornecido, constituent é usada como teste padrão. `{constituent, alphacharp, digitcharp, lowercasep, uppercasep, charp, characterp, alphanumericp}` é o conjunto de fnções de teste. (A verão Lisp de `tokens` é escrita por Paul Graham. ANSI Common Lisp, 1996, page 67.)

      (%i1) tokens("24 October 2005");
      (%o1)                  [24, October, 2005]
      (%i2) tokens("05-10-24",'digitcharp);
      (%o2)                     [05, 10, 24]
      (%i3) map(parsetoken,%);
      (%o3)                      [5, 10, 24]

Previous: Funções e Variáveis para caracteres, Up: stringproc [Contents][Index]