포커를하는 동안 손에 들고있는 것을 알아내는 코드를 작성하려고합니다. 제가 만들고있는 패턴 객체는 5 장의 카드를 확인하는 형식입니다. 각 카드는 값에 의해 정의 된 다음 양복으로 정의됩니다. 예를 들어 스페이드의 에이스는 As로 표시됩니다. 직선을 인식하려면 다음과 같은 코드가 있지만 순서가 맞으면 작동합니다. 어떻게하면 똑같은 문자열을 5d4sAc3s2h
과 같이 인식하게 할 수 있을까요? 어떤 도움을 주셔서 감사합니다!정규식이 어떤 순서로든 매치합니다.
Pattern[] floppedStraightCheck;
floppedStraightCheck = new Pattern[10];
floppedStraightCheck[0] = Pattern.compile("(([aA][scdhSCDH])([2][scdhSCDH])([3][scdhSCDH])([4][scdhSCDH])([5][scdhSCDH])");
정직하게 말하면이 문제에 대한 최선의 해결책은 정규 표현식처럼 들리지 않습니다. 문자열을 먼저 구문 분석하면 (정규식은 도움이 될지 모르지만 정규식을 사용하지 않고도 충분히 간단해야합니다) 'CardInfo' 객체 (또는 이와 유사한)의 배열을 만든 다음 해당 배열을 분석하여 스트레이트 풀 하우스인지 확인하고, –
예, 문자열이 손을 표현하는 가장 좋은 방법은 아님 –
핵심 응용 프로그램 논리를 하나의 정규식에 넣으려고하는 것처럼 들립니다. 대신에 훨씬 더 읽고 유지 보수 할 수있는 메소드를 작성해야합니다. –