반응형
f #의 문자열 시작 부분에서 패턴 일치
f #에서 문자열의 시작 부분을 일치 시키려고합니다. 내가 그들을 문자 목록으로 취급해야하는지 또는 무엇으로 취급해야하는지 확실하지 않습니다. 모든 제안을 주시면 감사하겠습니다.
다음은 내가하려는 작업의 가짜 코드 버전입니다.
let text = "The brown fox.."
match text with
| "The"::_ -> true
| "If"::_ -> true
| _ -> false
그래서 저는 문자열의 시작 부분을보고 일치합니다. 참고 나는 문자열 목록에서 일치하지 않고 내가하려는 일의 본질에 대한 아이디어로 위의 내용을 썼습니다.
매개 변수화 된 활성 패턴 을 구출하십시오!
let (|Prefix|_|) (p:string) (s:string) =
if s.StartsWith(p) then
Some(s.Substring(p.Length))
else
None
match "Hello world" with
| Prefix "The" rest -> printfn "Started with 'The', rest is %s" rest
| Prefix "Hello" rest -> printfn "Started with 'Hello', rest is %s" rest
| _ -> printfn "neither"
패턴에 가드를 사용할 수도 있습니다.
match text with
| txt when txt.StartsWith("The") -> true
| txt when txt.StartsWith("If") -> true
| _ -> false
예, 일치 표현식을 사용하려면 문자 목록으로 처리해야합니다.
다음을 사용하여 문자열을 변환하십시오.
let text = "The brown fox.." |> Seq.toList
그런 다음 일치 표현식을 사용할 수 있지만 각 문자에 대해 문자 (목록의 요소 유형)를 사용해야합니다.
match text with
| 'T'::'h'::'e'::_ -> true
| 'I'::'f'::_ -> true
| _ -> false
Brian이 Parameterized Active Patterns가 훨씬 더 좋을 것이라고 제안했듯이 여기에 유용한 패턴이 있습니다 (페이지 끝으로 이동).
참조 URL : https://stackoverflow.com/questions/3722591/pattern-matching-on-the-beginning-of-a-string-in-f
반응형
'UFO ET IT' 카테고리의 다른 글
Node.js의 서버 측에서 Object.values ()를 사용하는 방법 (0) | 2021.01.06 |
---|---|
Enum values (). length 대 개인 필드 (0) | 2021.01.06 |
HttpURLConnection 객체에서 JSON 구문 분석 (0) | 2021.01.06 |
쉘 스크립트의 내용으로 파일 만들기 (0) | 2021.01.06 |
Android Studio 프로젝트의 명령 줄에서 Gradle을 사용한 빌드 실패 : Xlint 오류 (0) | 2021.01.06 |