실제로 기술 내용이 없기 때문에 기억할 수 없으므로이 기사에 기록하겠습니다.
일반적으로 응용 프로그램 시스템에 많은 SMS 메시지가 있거나 푸시 메시지 등이 있지만 이러한 메시지는 사용자 이름을 변경하는 것과 같은 공통점이 동일합니다.
빨간색 글꼴을 제외하고 아래의 것과 마찬가지로 나머지는 동일합니다.
친애하는 고객 : 귀하의 Alipay 계정 110 **** 11 계약 된 온라인 판매자 대출은 2018-06-10에 1999.99 위안을 상환해야합니다. 이 시스템은 2018-06-10의 Alipay 계정, Bound Savings Card, Yu'ebao 및 Yu'ebao (있는 경우)의 잔액을 자동으로 공제합니다. 잔액 및 저축 카드 대출 상환에 대한 제한이 제한되어 있기 때문에 Yu'ebao, 공지 은행 합의 계좌 및 Yu'ebao의 잔액이 충분한 지 확인하기 위해 우선 순위를 부여하십시오. (이미 상환 한 경우이 정보를 무시하십시오) [대수 은행]
다른 학생들은 다른 해결책을 가질 수 있습니다. 참조를위한 내 솔루션은 다음과 같습니다. 물론 더 나은 솔루션이 있으면 공유 할 수 있습니다 ~
솔루션 1 : 하드 코딩 모드
코드에서 하드 코딩하거나 구성 파일에서 읽을 수 있습니다. 코딩 경험이있는 학생들은 작성해야합니다
장점 : 메시지 내용은 직관적이며 문자 메시지 내용을 코드에서 직접 수정할 수 있습니다.
단점 : 코드가 중복되고 간결하지 않으며, 하드 코딩 된 하드 코딩으로 인해 메시지 컨텐츠를 수정해야 할 필요성으로 인해 서버가 다시 시작됩니다.
해결책 2 : 데이터베이스에 저장하십시오
서버에 공통 메시지 템플릿을 저장하고 필요할 때 데이터베이스에서 직접 읽고 구문 분석하십시오.
독서 후 분석은 천명과 방법, 각각 고유 한 솔루션, 각각 고유 한 장점과 단점으로 여겨집니다.
여기서는 java.text包의 MessageFormat.format 메소드를 사용하여 템플릿 메시지를 쉽게 일치시키고 구문 분석 할 수 있습니다.
MessageFormat 메소드 소개
MessageFormat은 다음과 같은 문자열 (일반적으로 문자열)을 포맷하는 데 사용됩니다.
String str = "나는 {0}가 아니고, 나이는 {1, 숫자, 짧은}, 높이는 {2, 숫자,#.#}";MessageFormat은 그러한 메시지를 형식화 한 다음 다음과 같은 패턴의 적절한 위치에 형식의 문자열을 삽입 할 수 있습니다.
str의 {0}을 "Pig", {1, 숫자, 짧은}로 숫자 8로, {2, 숫자,#.#}를 숫자 1.2로 바꿉니다.
그러면 최종 사용자가 얻는 것은 형식의 문자열입니다.
MessageFormat 자체는 로케일과 관련이 없으며, 사용자가 MessageFormat에 제공 한 모드 및 삽입 된 매개 변수에 대한 하위 형식 패턴과 다른 지역에 적합한 메시지를 생성합니다.
MessageFormat 모드 (기본 부분) :
형식 범위 :
{ArgumentIndex}
{ArgumentIndex, formattype}
{ArgumentIndex, formattype, formatstyle}
FARMATTYPE :
숫자
날짜
시간
선택 (choiceformat 필요)
형식 스타일 :
짧은
중간
긴
가득한
정수
통화
퍼센트
subformatpattern
이 문자열에서 STR을 예로 들어보십시오.
1. {0} 및 {1, 숫자, 짧은} 및 {2, 숫자,#.#}; 둘 다 형식에 속하며 0,1,2는 ArgumentIndex입니다.
2. {1, 숫자, 짧은}의 숫자는 Formattype에 속하는 반면 Short는 FormatStyle에 속합니다.
3.#.#in {1, 번호,#.#}는 하위 형식 모드에 속합니다.
FormatType 및 FormatStyle을 지정하는 것은 날짜 형식 값, 다른 정밀도, 백분율 유형 등을 생성하는 것입니다.
예:
1. ArgumentIndex는 음이 아닌 정수 여야합니다. 그 숫자는 0 ~ 9의 10으로 제한되지 않으며 0에서 9까지의 숫자로 구성 될 수 있으므로 다음과 같은 많은 것들이있을 수 있습니다.
문자열 pig = "{0} {1} {2} {3} {4} {5} {6} {7} {8} {9} {10} {11} {12} {13} {14} {15} {16}"; 대상 [] array = new Object [] { "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q"}; 문자열 값 = messageformat.format (메시지, 배열); System.out.println (값); 최종 결과는 다음과 같습니다. ABCDEFGHIJKLMNOPQ
2. 문자열을 형식화 할 때 두 개의 단일 따옴표 만 단일 인용문을 나타내며 단일 단일 인용문은 다음과 같이 생략됩니다.
문자열 메시지 = "오, {0}은 'a'돼지"입니다. Object [] array = new Object [] { "Zhangsan"}; 문자열 값 = messageformat.format (메시지, 배열); System.out.println (값); 최종 결과는 다음과 같습니다. oh, ZhangSan is a pig
다음과 같은 문자 A에 단일 따옴표를 추가하십시오.
문자열 메시지 = "오, {0}은 '' ''돼지"입니다. Object [] array = new Object [] { "Zhangsan"}; 문자열 값 = messageformat.format (메시지, 배열); System.out.println (값); 최종 결과는 다음과 같습니다. oh, ZhangSan is 'a' pig
3. 단일 따옴표는 문자 나 문자열을 진정으로 유지합니다.
따라서 특별한 요구 사항이없는 경우 공식 서식 전에 단일 따옴표를 제거해야합니다. 그렇지 않으면 불필요한 문제가 발생합니다.
문자열 메시지 = "오, '{0}'는 돼지입니다."; Object [] array = new Object [] { "Zhangsan"}; 문자열 값 = messageformat.format (메시지, 배열); System.out.println (값);최종 결과는 다음과 같습니다. 오, {0}은 '돼지'입니다. Zhangsan은 여기에 표시 할 수 없습니다.
예를 들어, 하위 형식 패턴을 사용하면 추가 단일 인용문이 있습니다.
문자열 메시지 = "오, '{0, 숫자,#.#}은 돼지입니다."; Object [] array = new Object [] {New Double (3.1415)}; 문자열 값 = messageformat.format (메시지, 배열); System.out.println (값); 최종 결과는 다음과 같습니다. oh, {0,number,#.#} is 'a' pig。
이와 같으면 올바르게 표시 할 수 있습니다.
문자열 메시지 = "오, {0, 숫자,#.#}는 돼지입니다"; Object [] array = new Object [] {New Double (3.1415)}; 문자열 값 = messageformat.format (메시지, 배열); System.out.println (값); 최종 결과는 다음과 같습니다. oh, 3.1 is a pig
3. 인용 된 문자열이든 인용되지 않은 문자열이든 왼쪽 곱슬 브레이스는 지원되지 않지만 오른쪽 곱슬 브레이스는 다음과 같이 지원됩니다.
문자열 메시지 = "오, {돼지"; Object [] array = new Object [] { "Zhangsan"}; 문자열 값 = messageformat.format (메시지, 배열); System.out.println (값); 최종 결과는 다음과 같습니다.异常java.lang.IllegalArgumentException: Unmatched braces in the pattern
오른쪽 브레이스는 다음과 같이 표시 될 수 있습니다.
문자열 메시지 = "오,}는 돼지입니다"; Object [] array = new Object [] { "Zhangsan"}; 문자열 값 = messageformat.format (메시지, 배열); System.out.println (값); 최종 결과는 다음과 같습니다. oh, } is a pig
messageformat.format 메소드 소개 :
MessageFormat.format 메소드가 호출 될 때마다 MessageFormat의 인스턴스가 작성되며 해당 MessageFormat과 동일합니다. MessageFormat 클래스의 형식 메소드는 다음과 같습니다.
공개 정적 문자열 형식 (문자열 패턴, 객체 ... 인수) {messageformat temp = new MessageFormat (패턴); return temp.format (인수); }MessageFormat 인스턴스를 재사용하려면 다음 방법을 사용할 수 있습니다.
문자열 메시지 = "오, {0}은 돼지입니다"; MessageFormat MessageFormat = new MessageFormat (메시지); Object [] array = new Object [] { "Zhangsan"}; 문자열 값 = messageformat.format (배열); System.out.println (값); 최종 결과는 다음과 같습니다. oh, ZhangSan is a pig
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.