두 문자열의 비슷한 문자 수를 확인하려면 내장 메서드가 있습니까 (설명서를 검색하여 찾을 수 없음)? 문자의 순서는 관련이 없으므로 "abc"와 "cad"를 비교하면 문자 'c'와 'd'가 66 % 일치합니다. 발생 건수도 관련이 있습니다. 'a'는 두 문자열 사이에 하나의 공통 'a'가 있기 때문에 처음에는 일치하지만 두 번째에는 일치하지 않아야합니다. 현재 비트 연산을 사용하여이 작업을 수행하는 방법이 내장되어 있습니까? 아니면 루프를 실행하고 수동으로 비교해야합니까?비슷한 문자 수를 비교하는 메서드가 내장 된 NSString
1
A
답변
3
직접 제작해야하지만 여기에 바로 가기가 있습니다. NSCountedSet
이라는 내장 클래스가 있습니다. 이 개체는 각 고유 개체와 추가 된 개체 수를 유지합니다.
두 개의 문자열을 가져 와서 해당 문자를 서로 다른 두 개의 NSCountedSet
컬렉션으로로드 할 수 있습니다. 그런 다음 결과 컬렉션의 항목을 확인하십시오. 예를 들어, 먼저 NSCountedSet
에서 개체를 가져옵니다. 두 번째 NSCountedSet
에 있는지 확인하십시오. 그 특정 문자에 대한 2 카운트 중 작은 숫자는 2 개의 문자열이 공통으로 가지고있는 문자의 수입니다. 반복 횟수를 줄이려면 적은 수의 개체로 시작한 다음 해당 개체를 통해 열거하십시오.
여기 애플의 설명서는 NSCountedSet
입니다. https://developer.apple.com/library/ios/#documentation/Cocoa/Reference/Foundation/Classes/NSCountedSet_Class/Reference/Reference.html
1
저는 주저 합니다만, 아마도 여러분의 요구 사항을 채우는 방법은 없을 것입니다. 나는 이것을 할 것이다 :
NSString에 카테고리를 만든다.
- 는
self
의 사본은 고유의 문자를 포함하는selfCopy and trim
selfCopy`라고 확인 :-(float)percentageOfSimilarCharactersForString:(NSString*)targetString
여기이 범주에 들어가는 거친 의사의 호출 할 수 있습니다. - 비슷하게 트림
targetString
을 고유 한 문자로 트림합니다. 고유 한 문자로 트리밍하려면NSSet
또는 그 하위 클래스를 사용할 수 있습니다. 각 캐릭터를 반복하고 세트에 추가하면 도움이됩니다. - 이제 두 세트를 모두 ASCII 값으로 정렬하십시오.
- 관련 NSSet의 각 문자를 반복하고
selfCopy
관련 NSSet에 있는지 확인하십시오. 이를 위해 containsString이라는 또 다른 카테고리를 사용할 수 있습니다. You can find that here. containsString은 true를 반환 할 때마다 미리 정의 된 카운터를 증가시킵니다. - 반환 값은
(counter_value/length_of_selfCopy)*100
입니다.
관련 문제
- 1. NSString 또는 NSMutableString의 문자 수를 계산합니까?
- 2. 문자열의 비슷한 문자 수를 계산하는 PHP 함수
- 3. JS에 내장 된 메서드가 호출되었는지 확인
- 4. NSString 패딩/문자 사이의 간격
- 5. NSString 변환 퍼센트 문자
- 6. 특수 문자 NSString
- 7. 있는 NSString 제거 문자
- 8. NSString 길이 - 특수 문자
- 9. NSString 그림 문자 리터럴
- 10. Wordpress에 내장 된 보안 문자 사용 안함
- 11. Objective-C NSString 문자 대체
- 12. NSString에서 다른 문자 수를 계산하십시오.
- 13. NSString 배열을 반복하여 비교하는 더 효율적인 방법
- 14. 는 NSString 대체 문자 방법
- 15. 문자 배열을 NSString 객체로 변환
- 16. 두 NSNumber 수를 비교하는 방법은 무엇입니까?
- 17. NSString UTF8String 유니 코드 문자 섞기
- 18. 비슷한 검색어 수를 줄이는 방법
- 19. 소켓 프로그래밍에서 수신 된 문자 수를 계산하십시오.
- 20. 비슷한 값을 기반으로하는 행 수를 계산하십시오.
- 21. 2D 배열을 직접 정렬하는 내장 메서드가 있습니까?
- 22. 모든 플래시 SWF 파일에는 자바와 인터페이스하기위한 내장 된 메서드가 있습니까?
- 23. 정수에 0을 채우기 위해 RoR에 내장 된 메서드가 있습니까?
- 24. Array.IsArray와 유사한 메서드가 내장 된 다른 유형의 경우
- 25. Powershell에서 문자 수를 늘리십시오.
- 26. 문자열의 문자 수를 계산하십시오.
- 27. 있는 NSString 후에서 const는 NSString 변환 문자 내가 따옴표와 문제가
- 28. 비슷한 내용을 가진 두 파일을 비교하는 방법
- 29. 비슷한 문자 인코딩을 유지하는 방법
- 30. arduino와 문자 배열을 비교하는 방법
발생 횟수는 중요합니까? 예를 들어, "abc"와 "abac"는 모두 'a', 'b'및 'c'문자를 포함하므로 100 % 일치합니까? – Chuck
'NSString'의'commonPrefixWithString' 메소드가 도움이 될 수 있습니다. – nsgulliver
발생 횟수는 분명 적절합니다. 나는 그것을 반영하기 위해 나의 질문을 업데이트 할 것이다. – randombits