# FindOneOf - Función de script y de gráfico

FindOneOf() busca una cadena de caracteres para hallar la posición de cualquier carácter de un conjunto de caracteres proporcionados. Devuelve la posición de la enésima instancia de cualquier carácter del conjunto de búsqueda, donde N sea el tercer parámetro opcional de la función. Si no se suministra un tercer parámetro, devuelve la primera instancia. Si no se encuentra ninguna coincidencia, devuelve 0.

Sintaxis:

FindOneOf(text, char\_set[, count])

Tipo de datos que devuelve: Entero

Argumentos

| Argumento | Descripción |
| --- | --- |
| text | La cadena original. |
| char\_set | Un conjunto de caracteres para buscar en text. |
| count | Define qué instancia de cualquiera de los caracteres se debe buscar. Por ejemplo, un valor de 2 busca la segunda vez que aparece un carácter. |

Ejemplo: expresiones de gráfico

| Ejemplo | Resultado |
| --- | --- |
| `FindOneOf(  'my example text string', 'et%s' )` | Devuelve `4` porque `e` es el cuarto carácter de la cadena del ejemplo. |
| `FindOneOf(  'my example text string', 'et%s', 3 )` | Devuelve `12` porque la búsqueda es de cualquiera de los caracteres `e`, `t`, `%` o `s`, y `t` es la tercera instancia en la posición `12` de la cadena de ejemplo. |
| `FindOneOf(  'my example text string', '¤%&' )` | Devuelve `0` porque no se encuentra ninguno de los caracteres `¤`, `%` o `&` en la cadena de ejemplo. |

## Ejemplo: fundamentos de FindOneOf

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/FindOneOf.htm)

#### Expresión de gráfico

Descripción

Abra el Editor de carga de datos y añada el script de carga inferior en una nueva sección.

El script de carga contiene:

* Un conjunto de datos que se carga en una tabla de datos denominada `Example`.

* Un campo en la tabla de datos denominado `Phrase`, que contiene las cadenas de texto originales que se van a procesar.

Script de carga

```
Example:
Load *
Inline
[Phrase
Many tiny beads
For a very long time
Has the potential for growth
];
```

Resultados

Cargue los datos y abra una hoja. Cree una nueva tabla y agregue este campo como dimensión:

* ` Phrase
                                   `

Cree las siguientes dimensiones calculadas:

* `=FindOneOf(Phrase, 'e', 1)`

* `=FindOneOf(Phrase, 'y', 1)`

* `=FindOneOf(Phrase, 'ey', 1)`

* `=FindOneOf(Phrase, 'e', 2)`

* `=FindOneOf(Phrase, 'y', 2)`

* `=FindOneOf(Phrase, 'ey', 2)`

Tabla de resultados

| Phrase | FindOneOf(Phrase, 'e', 1) | FindOneOf(Phrase, 'y', 1) | FindOneOf(Phrase, 'ey', 1) | FindOneOf(Phrase, 'e', 2) | FindOneOf(Phrase, 'y', 2) | FindOneOf(Phrase, 'ey', 2) |
| --- | --- | --- | --- | --- | --- | --- |
| For a very long time | 8 | 10 | 8 | 20 | 0 | 10 |
| Has the potential for growth | 7 | 0 | 7 | 12 | 0 | 12 |
| Many tiny beads | 12 | 4 | 4 | 0 | 9 | 9 |

Para cada dimensión calculada, el resultado de salida devuelve la posición de las instancias en que aparecen los caracteres del conjunto de búsqueda para cada frase. Por ejemplo, la primera instancia de la letra `e` se encuentra en la posición `8`, `7`, y `12` para cada frase respectivamente. La segunda instancia de la letra `e` en cada frase se encuentra en la posición `20`, `12`, y `0` (no encontrada). Del mismo modo, la primera instancia de las letras "`e` o `y`" se encuentra en la posición `8`, `7` y `4`, para cada frase respectivamente. Observe que en la frase `For a very long time`, la primera instancia de "`e` o `y`" se encuentra en la posición `8`, un `e`, y la segunda instancia en la posición `10`, un `y`.

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/FindOneOf.htm)

#### Script de carga

El siguiente código muestra cómo utilizar la función en un script de carga.

```
Example:
Load *, FindOneOf(InputText, SearchFor, Occurrence) AS FindOneOf_Matches
Inline
InputText, SearchFor, Occurrence
my example text string, et%s,1
my example text string, et%s,3
my example text string, ¤%&,1
];
```

Tabla de resultados

| InputText | SearchFor | Ocurrence | FindOneOf\_Matches |
| --- | --- | --- | --- |
| mi cadena de texto a modo de ejemplo | et%s | 1 | 4 |
| mi cadena de texto a modo de ejemplo | et%s | 3 | 12 |
| mi cadena de texto a modo de ejemplo | ¤%& | 1 | 0 |

## Ejemplo: uso de FindOneOf

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/FindOneOf.htm)

#### Expresión de gráfico

Descripción

Este ejemplo utiliza la función `FindOneOf` para analizar los comentarios de los clientes en un conjunto de datos de pedidos de clientes e identificar los pedidos que pueden requerir una acción. Cada pedido tiene un campo `CustomerComment` donde los clientes pueden dejar notas o comentarios sobre sus pedidos. Analizando los comentarios, puede identificar palabras clave o caracteres específicos, como '!', '@', '#', que podrían indicar urgencia o peticiones especiales.

Abra el Editor de carga de datos y añada el script de carga inferior en una nueva sección.

El script de carga contiene:

* Un conjunto de datos que se carga en una tabla de datos denominada `Example`.

* Los siguientes campos de la tabla de datos:

  * `TicketID` el número de identidad del ticket

  * `CustomerComment` la cadena de texto original

Script de carga

```
Example:
Load * inline [
TicketID, CustomerComment
1, I need this order ASAP!
2, Please confirm my order @12345.
3, Can you update my order?
4, I have a question about #discount.
5, Thank you!
];
```

Resultados

Cargue los datos y abra una hoja. Cree una nueva tabla y agregue estos campos como dimensiones:

* ` TicketID
                                   `

* `CustomerComment`

Cree las siguientes dimensiones calculadas:

* `=FindOneOf(CustomerComment, '!,@,#')`

* `=If(FindOneOf(CustomerComment, '!,@,#')>0,'High Priority','Normal Priority')`

Tabla de resultados

| TicketID | ComentarioCliente | FindOneOf(ComentarioCliente, '!,@,#') | If(FindOneOf(ComentarioCliente, '!,@,#')&gt;0,'Alta prioridad','Prioridad normal') |
| --- | --- | --- | --- |
| 1 | ¡Necesito este pedido lo antes posible! | 23 | Alta prioridad |
| 2 | Por favor, confirmen mi pedido @12345. | 25 | Alta prioridad |
| 3 | ¿Pueden actualizar mi pedido? | 0 | Prioridad normal |
| 4 | Tengo una pregunta sobre el #descuento. | 25 | Alta prioridad |
| 5 | ¡Muchas gracias! | 10 | Alta prioridad |

Compare el resultado de la función `FindOneOf` con los valores originales de la cadena ComentarioCliente (`CustomerComment`) que se cargaron en el script. Utilizando los valores `!,@,#`, la función devolvió con éxito la posición en la que aparecen esos caracteres en la cadena de comentarios. La medida final utiliza una sentencia condicional `If` para identificar los registros que incluyen alguno de los caracteres de búsqueda y asignarlos como `High Priority`. Si no se encuentra ninguno de los caracteres de búsqueda `!,@,#`, por ejemplo la fila 3, entonces el ticket se clasifica como `Normal Priority`.