strindexk
Précédent | Opcodes et opérateurs de l'orchestre | Suivant

## strindexk

strindexk — Retourne la position de la première occurence d'une chaîne de caractères dans une autre chaîne.

## Description

Retourne la position de la première occurence de S2 dans S1, ou -1 si elle n'est pas trouvée. Si S2 est vide, 0 est retourné. strindex s'exécute à la fois pendant l'initialisation et pendant l'exécution.

## Syntaxe

    kpos strindexk S1, S2

## Exemples

Voici un exemple de l'opcode strindexk. Il utilise le fichier strindexk.csd.

Exemple 1033. Exemple de l'opcode strindexk.

Voir les sections Audio en Temps Réel et Options de la Ligne de Commande pour plus d'information sur l'utilisation des options de la ligne de commande.

    <CsoundSynthesizer>
    <CsOptions>
    ; Select audio/midi flags here according to platform
    -odac     ;;;realtime audio out
    ;-iadc    ;;;uncomment -iadc if realtime audio input is needed too
    ; For Non-realtime ouput leave only the line below:
    ; -o strindexk.wav -W ;;; for file output any platform
    </CsOptions>
    <CsInstruments>

    sr = 44100
    ksmps = 32
    nchnls = 2
    0dbfs  = 1

    seed 0

    instr 1
    ;get one element of the input string whenever the metro
    ;triggers, and call a subinstrument to play the file

    Smember   strget    p4
    istrlen   strlen    Smember
    kprint    init      0
    ktrig     metro     .5

     ;whenever the trigger gives signal
     if ktrig == 1 then
      ;choose a random element (0, 1 or 2)
    kel       random    0, 2.9999
    kel       =         int(kel)
     ;make a copy for leaving Smember intact
    Scopy     strcpyk   Smember
     ;set the initial index for reading substrings
    kndx      =         0
     ;set counter for searching the element
    kcount    =         0
     ;start looping over the elements in Smember
    loop:
    kdelim    strindexk Scopy, ":"
      ;as long as ":" occurs in Scopy, do:
      if kdelim > 0 then
       ;if this is the element to get
       if kel == kcount then
        ;read it as substring
    Sfile     strsubk   Scopy, kndx, kdelim
    kprint = kprint+1
        ;and jump out
              kgoto     call
       ;if not
       else
        ;cut off this element from Scopy
    Scopy     strsubk   Scopy, kdelim+1, istrlen
       endif
       ;if no element has been found,go back to loop
       ;and look for the next element
    kcount    =         kcount+1
              kgoto     loop
      ;if there is no delimiter left, the rest is the searched element
      else
    Sfile     strcpyk   Scopy
      endif
    call:
     ;print the result, call the subinstrument and play the file
              printf    "kel = %d, file = '%s'\n", ktrig+kprint, kel, Sfile
    S_call    sprintfk  {{i 2 0 1 "%s"}}, Sfile
              scoreline S_call, ktrig
     endif

    endin

    instr 2 ;play
    Sfile     strget    p4
    ilen      filelen   Sfile
    p3        =         ilen
    asig      soundin   Sfile
              outs      asig, asig
    endin
    </CsInstruments>
    <CsScore>

    i 1 0 30 "mary.wav:fox.wav:beats.wav"
    e
    </CsScore>
    </CsoundSynthesizer>

## Voir aussi

strindex

## Crédits

Auteur : Istvan Varga
2006

Nouveau dans la version 5.02

Précédent | Niveau supérieur | Suivant
strindex | Sommaire | strlen