# FindOneOf - 스크립트 및 차트 함수

FindOneOf()는 제공된 문자 집합의 문자 발견 위치를 찾기 위해 문자열을 검색합니다. 검색 집합에서 모든 문자의 N번째 발생 위치가 반환됩니다. 여기서 N은 함수의 선택적 세 번째 매개 변수입니다. 세 번째 매개 변수가 제공되지 않으면 첫 번째 발생 항목이 반환됩니다. 일치 항목이 발견되지 않으면 0이 반환됩니다.

구문:

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

반환 데이터 유형: 정수

인수

| 인수 | 설명 |
| --- | --- |
| text | 원래 문자열입니다. |
| char\_set | text에서 검색할 문자 집합입니다. |
| count | 검색할 문자의 발생 위치를 정의합니다. 예를 들어 값이 2이면 두 번째 발생 항목을 검색합니다. |

예: 차트 표현식

| 예 | 결과 |
| --- | --- |
| `FindOneOf(  'my example text string', 'et%s' )` | `e`가 예 문자열의 네 번째 문자이므로 `4`를 반환합니다. |
| `FindOneOf(  'my example text string', 'et%s', 3 )` | 검색이 `e`, `t`, `%` 또는 `s` 문자 중 하나이고 `t`이 문자열 예의 위치 `12`에서 세 번째로 발견되었기 때문에 `12`를 반환합니다. |
| `FindOneOf(  'my example text string', '¤%&' )` | 문자열 예에 `¤`, `%` 또는 `&` 문자가 없으므로 `0`을 반환합니다. |

## 예 - FindOneOf 기본 사항

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

#### 차트 표현식

개요

데이터 로드 편집기를 열고 새 섹션에 아래 로드 스크립트를 추가합니다.

로드 스크립트에는 다음이 포함됩니다.

* `Example`이라는 데이터 테이블에 로드되는 데이터 집합입니다.

* 데이터 테이블의 한 필드는 `Phrase`이며, 이 필드에는 처리할 원본 텍스트 문자열이 포함되어 있습니다.

로드 스크립트

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

결과

데이터를 로드하고 시트를 엽니다. 새 테이블을 만들고 이 필드를 차원으로 추가합니다.

* ` 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)`

결과 테이블

| 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 |

각 계산 차원에 대해 출력은 각 구에 대한 검색 집합에서 문자가 발생한 위치를 반환합니다. 예를 들어, `e` 문자의 첫 번째 출현은 각 구에 대해 각각 `8`, `7` 및 `12` 위치에서 발견됩니다. 각 구에서 `e` 문자의 두 번째 출현은 `20`, `12` 및 `0` 위치에서 발견됩니다(찾을 수 없음). 마찬가지로, 각 구에 대해 '`e` 또는 `y`' 문자의 첫 번째 발생은 각각 `8`, `7` 및 `4` 위치에서 발견됩니다. `For a very long time` 구에서 '`e` 또는 `y`'의 첫 번째 출현은 `8` 위치(`e`)에서 발견되고, 두 번째 출현은 `10` 위치(`y`)에서 발견됩니다.

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

#### 로드 스크립트

다음 코드는 로드 스크립트에서 함수를 사용하는 방법을 보여 줍니다.

```
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
];
```

결과 테이블

| InputText | SearchFor | Occurrence | FindOneOf\_Matches |
| --- | --- | --- | --- |
| 내 텍스트 문자열 예 | et%s | 1 | 4 |
| 내 텍스트 문자열 예 | et%s | 3 | 12 |
| 내 텍스트 문자열 예 | ¤%& | 1 | 0 |

## 예 - FindOneOf 시나리오

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

#### 차트 표현식

개요

이 예에서는 `FindOneOf` 함수를 사용하여 고객 주문 데이터 집합에서 고객 의견을 분석하고 작업이 필요할 수 있는 주문을 식별합니다. 각 주문에는 고객이 주문에 대한 메모나 주석을 남길 수 있는 `CustomerComment` 필드가 있습니다. 주석을 분석하면 '!', '@', '#'과 같이 긴급성이나 특별 요청을 나타낼 수 있는 특정 키워드나 문자를 식별할 수 있습니다.

데이터 로드 편집기를 열고 새 섹션에 아래 로드 스크립트를 추가합니다.

로드 스크립트에는 다음이 포함됩니다.

* `Example`이라는 데이터 테이블에 로드되는 데이터 집합입니다.

* 데이터 테이블의 필드는 다음과 같습니다.

  * `TicketID`: 티켓의 식별 번호

  * `CustomerComment`: 원래 텍스트 문자열

로드 스크립트

```
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!
];
```

결과

데이터를 로드하고 시트를 엽니다. 새 테이블을 만들고 다음 필드를 차원으로 추가합니다.

* ` TicketID
                                   `

* `CustomerComment`

다음과 같이 계산 차원을 만듭니다.

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

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

결과 테이블

| TicketID | CustomerComment | FindOneOf(CustomerComment, '!,@,#') | If(FindOneOf(CustomerComment, '!,@,#')&gt;0,'High Priority','Normal Priority') |
| --- | --- | --- | --- |
| 1 | 이 주문은 가능한 한 빨리해야 합니다. | 23 | 높은 우선 순위 |
| 2 | 내 주문 @12345를 확인해 주십시오. | 25 | 높은 우선 순위 |
| 3 | 내 주문을 업데이트할 수 있습니까? | 0 | 일반 우선 순위 |
| 4 | #discount에 대해 궁금한 점이 있습니다. | 25 | 높은 우선 순위 |
| 5 | 감사합니다. | 10 | 높은 우선 순위 |

`FindOneOf` 함수의 출력을 스크립트에 로드된 원래 `CustomerComment` 문자열 값과 비교합니다. `!,@,#` 값을 사용하여 함수는 주석 문자열에서 해당 문자가 발생하는 위치를 성공적으로 반환했습니다. 마지막 측정값은 조건부 `If` 문을 사용하여 검색 문자 중 하나를 포함하는 레코드를 식별하고 이를 `High Priority`로 지정합니다. 검색어 `!,@,#`이 하나도 발견되지 않으면(예: 행 3) 티켓은 `Normal Priority`로 분류됩니다.