[] 의 영문 문 자 를 삭제 합 니 다.
7627 단어 문자
화 귀 사상 수학 에는 매우 중요 한 사상 이 있 는데 바로 '화 귀' 사상 이다. 무엇이 화 귀 입 니까?쉽게 말 하면 복잡 한 문 제 를 귀납 적 으로 정리 하고 이 를 간단 한 문제 의 조합 으로 만 든 다음 에 간단 한 문제 가 해결 되 고 복잡 한 문제 도 해결 된다. 어떤 친 구 는 '수학 이 머리 가 아 픈 것 을 보고 나 에 게 무슨 화 귀 사상 을 말 하 느 냐' 고 말한다. 사실은 그렇지 않다. 단지 화 귀 사상 이라는 이름 이 무섭다. 수학 사상 이 야.사실 그녀 는 매우 기초적인 사람 이다. 왜냐하면 우 리 는 매일 이 사상 을 사용 하고 있 기 때문이다. 생활 속 의 예 를 들 어 슈퍼마켓 의 상품 품질 과 가격 이 좋 은 지 나 쁜 지 알 고 싶다. 어떻게 연구 해 야 하 는가?분명히 이것 은 우리 가 하나하나 검사 할 방법 이 없 지만 우 리 는 볼 수 있 고 비교 할 수 있다. 만약 에 이 슈퍼마켓 이 항상 사람 이 많 고 소비자 의 신고 도 적다 면 우 리 는 결론 을 내 릴 수 있다. 이 슈퍼마켓 은 괜찮다. 예 를 들 어 대상 을 대상 으로 하 는 개념 인 C \ # 에서 계승 하 는 것 이 전달 성 이 있다 는 것 을 어떻게 이해 합 니까?사실은 간단 하 다. 상속 때문에 자 류 는 아버지 류 의 구성원 을 포함 하고 있다. 그러면 계속 손자 류 는 자 류 를 계승 하면 자 류 의 구성원, 즉 손자 류 는 아버지 류 의 구성원 을 포함 하기 때문에 결론 을 내 렸 다. 파생 류 는 모두 기본 적 인 구성원 을 가지 고 자 연 스 럽 게 전달 성 이 잘 이해 된다.
문제 화 는 그렇게 많이 말 한 것 이 이 문 제 를 해결 하 는 것 과 무슨 관계 가 있 습 니까?분명히 나 는 이 문 제 를 해결 하기 위해 화 귀 사상 을 사용 했다. 관건 은 이 문제 에 어떤 난점 이 있 느 냐 는 것 이다.예 를 들 어 문자열 이 있 습 니 다.
1 string str = "abc[ abc ]abc";
문자열 에 있 는 "[abc 안녕하세요]" 의 영문 문자 "abc" 를 제거 하여 문자열 을 바 꾸 려 고 합 니 다.
1 string str = "abc[ ]abc";
정규 표현 식 을 사용 하면
1 string str = Regex.Replace(str, @"(\[ )[a-zA-Z]+( \])", "$1$2");
물론 이곳 의 해답 은 결코 유일한 것 이 아니 기 때문에 제 가 생각 한 방법 일 뿐 입 니 다. 그러나 관건 은 이 상황 이 매우 특수 하 다 는 것 입 니 다. 우선, 괄호 '[]' 에서 한자 가 양쪽 에 있 는 것 이 아니 라 안녕하세요 가 아 닙 니 다.그 다음 에 중간 에 꼭 한 줄 의 영문 자모 만 있 는 것 이 아니다. 예 를 들 어 '너 abc 좋 은 abc 야' 일 수도 있다. 그러면 이때 그다지 효과 가 없다. 그러면 여기 서 문 제 는 바로 1. 괄호 안에 몇 개의 남자 블록 과 몇 개의 영어 블록 이 있 는 지 확실 하지 않다 는 것 이다.2. 괄호 안에 영문 과 한자 의 배열 방식 이 명확 하지 않다.
그러면 문 제 를 한 번 돌리 면 처리 하기 쉽다.
한자 의 양쪽 형 은 괄호 안의 영문 자 모 를 없 애 는 것 이 문제 이기 때문에 괄호 안의 양쪽 끝 이 무엇 이 든 C \ # 문 구 를 사용 할 수 있다.
1 string str = Regex.Replace(str, @"(\[)[a-zA-Z]*(.+?)[a-zA-Z]*(\])", "$1$2$3");
문자열 의 중국 괄호 양쪽 을 한자 로 만 듭 니 다. 즉, 모든 문자열 은 다음 과 같은 모델 로 나 눌 수 있 습 니 다.
... [중.. 중]...
[중 a 중 a 중] 형.
문자열 을 '한자 양변 형' 으로 바 꾼 후에 문 제 는 양 끝 한자 에 몇 개의 인용문 문자 가 있 는 지 명확 하지 않다 는 것 이다. 그러나 스스로 분석 하고 오른쪽 한 자 를 없 애 면 문자열 은 문자열 세 션 '중 a' 의 반복 적 인 순환 조합 으로 변 할 것 이다. 즉, '중 a', '중 a 중 a', '중 a 중 a 중 a', '"[중 a 중 a 중] 형" 문자열 을 잘 해결 하면 다른 상황 은 순환 으로 해결 할 수 있 습 니 다. 첫 번 째 단 계 는 왼쪽 에서 오른쪽으로 첫 번 째 영어 (존재 여 부 를 판단 해 야 합 니 다) 를 순서대로 제거 합 니 다. 예 를 들 어 하나의 문자열 "[중 a 중 a 중 a 중]" 정규 표현 식 을 통 해 "[중 a 중 a 중]" 으로 바 꿀 수 있 습 니 다. C \ # 문 구 를 사용 할 수 있 습 니 다.
1 if(Regex.IsMatch(str, @"\[[^\]]+?[a-zA-Z]+[^\]]+\]"))
2 {
3 string str = Regex.Replace(str, @"(\[[^\]]+?)[a-zA-Z]+([^\]]+\])", "$1$2");
4 }
두 번 째 단 계 는 간단 합 니 다. 나머지 는 '[중 a 중] 형' 이 남 을 때 까지 반복 되 는 것 입 니 다. 실제로 이 모드 문자열 이 남 았 을 때 위의 방법 을 사용 하면 중간 영 어 를 제거 할 수 있 습 니 다.
일치 하 는 규칙 을 분석 해 보 세 요. 실제로 문 제 를 해 결 했 습 니 다. 제 가 왜 정규 표현 식 을 이렇게 썼 는 지 설명 하 겠 습 니 다. 저 는 마지막 으로 일치 하 는 것 을 예 로 들 겠 습 니 다.
1 string str = "a[ a ]a";
2 if(Regex.IsMatch(str, @"\[[^\]]+?[a-zA-Z]+[^\]]+\]"))
3 {
4 string str = Regex.Replace(str, @"(\[[^\]]+?)[a-zA-Z]+([^\]]+\])", "$1$2");
5 }
분석: 1. 이때 if 판단 에서 IsMatch 는 IsMatch 의 정규 표현 식 과 일치 하 는 지 판단 합 니 다. "@" \ [^ \]] +?[a - zA - Z] + [^ \]] + \] "는 중 괄호 '[' 로 시작 한 다음 중간 에 중 괄호 가 끝 나 는 문자 '] 가 있 는 것 을 허용 하지 않 는 다 는 뜻 이 며, 탐욕 모드 를 취소 하여 뒤의' [a - zA - Z] + '를 가능 한 한 첫 번 째 영문 자모 와 일치 시 켰 다. 여 기 는 str 의' [중 a '와 일치 하고 나머지' [^ \] + \] '는 첫 번 째 인용문 자모 가 끝 난 후의 모든 문자 와 일치 하 다.그리고 끝 나 는 중 괄호 "]" 입 니 다. 따라서 돌아 오 는 것 은 true 입 니 다. 2. if 의 일치 가 바 뀌 기 시작 하면 바 꾸 기 가 쉽 습 니 다. Replace 방법 중의 정규 표현 식 의 앞 뒤 두 그룹 은 각각 "[중" 과 "중]" 과 일치 하기 때문에 "$1 $2" 는 중간 에 있 는 인용문 자 모 를 바 꿉 니 다. 마지막 으로 일치 하지 않 는 경우, 예 를 들 어 교체 "입 니 다.[중 a 중 a 중] ", 조 1 은" [중 ", 조 2 는" 중 a 중] "과 일치 합 니 다. 왼쪽 에 있 는 첫 번 째 영 어 를 바 꾸 었 을 뿐 입 니 다.
통합 결과
앞의 분석 을 통 해 중 괄호 안의 영 어 를 제거 하려 면 사용 할 수 있 는 일반적인 사 고 는 - > 중 괄호 안의 앞 뒤 영문 자 모 를 먼저 제거 하고 - > 순환 을 이용 하여 왼쪽 에서 오른쪽으로 한 조 의 영문 문 자 를 순서대로 제거 하고 영문 문자 까지 제거 합 니 다.
앞의 토론 과 결합 하여 방법 을 제시 하 다.
1 public static string MyReplace(string str)
2 {
3 str = Regex.Replace(str, @"(\[)[a-zA-Z]*(.+?)[a-zA-Z]*(\])", "$1$2$3");
4 while (Regex.IsMatch(str, @"\[[^\]]+?[a-zA-Z]+[^]]+\]"))
5 {
6 str = Regex.Replace(str, @"(\[[^\]]+?)[a-zA-Z]+([^\]]+\])", "$1$2");
7 }
8 return str;
9 }
그러나 생각해 볼 만 한 것 은 이곳 이 반드시 절대적 인 해결 방안 이 아니 라 제 생각 에 따라 더 좋 은 방법 이 나 올 것 입 니 다. 여기 서 저 는 문 제 를 생각 하 는 방법 을 제시 하고 해결 방안 을 만 들 었 을 뿐 입 니 다.
2012 년 3 월 23 일 금요일 장 쿤
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Java를 사용하여 문자가 있는 QR 코드 생성소개 주로 구글의 zxing 패키지를 사용했는데 다음에 예시 코드를 제시했기 때문에 모두의 이해와 학습에 편리하다. 코드는 모두 초보적인 구조에 속하고 기능이 있기 때문에 실제 사용 상황에 따라 보완하고 최적화해야 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.