Payback 0.0.1
CK Graduation Project
로딩중...
검색중...
일치하는것 없음
KoreanText 네임스페이스 참조

함수

CK_UE_API bool HasFinalConsonant (const FString &Text)
 
CK_UE_API void ReplaceToken (FString &InOutText, const FString &Token, const FString &Value)
 

상세한 설명

기획 문구의 치환자를 채울 때 필요한 한글 처리.

표에는 조사가 고정 문자로 박혀 있다. ("{{name2}}를 {{value2}} 만큼 하락") 치환한 값의 받침에 따라 조사가 달라지므로, 값을 넣은 뒤 조사를 다시 골라야 한다.

함수 문서화

◆ HasFinalConsonant()

bool KoreanText::HasFinalConsonant ( const FString &  Text)
108{
109 if (Text.IsEmpty())
110 {
111 return false;
112 }
113
114 const TCHAR LastChar = Text[Text.Len() - 1];
115
116 // 한글 음절은 (코드 - 0xAC00) % 28 이 0 이 아니면 받침이 있다.
117 if (LastChar >= GHangulFirst && LastChar <= GHangulLast)
118 {
119 return ((LastChar - GHangulFirst) % 28) != 0;
120 }
121
122 // 숫자로 끝나는 이름은 읽는 소리의 받침을 따른다. (영/일/삼/육/칠/팔 이 받침 있음)
123 if (LastChar >= TEXT('0') && LastChar <= TEXT('9'))
124 {
125 static const bool bDigitHasFinal[10] = { true, true, false, true, false, false, true, true, true, false };
126 return bDigitHasFinal[LastChar - TEXT('0')];
127 }
128
129 return false;
130}
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ ReplaceToken()

void KoreanText::ReplaceToken ( FString &  InOutText,
const FString &  Token,
const FString &  Value 
)
134{
135 if (Token.IsEmpty())
136 {
137 return;
138 }
139
140 const bool bHasFinal = HasFinalConsonant(Value);
141
142 int32 TokenIndex = InOutText.Find(Token, ESearchCase::CaseSensitive);
143
144 while (TokenIndex != INDEX_NONE)
145 {
146 InOutText = InOutText.Left(TokenIndex) + Value + InOutText.Mid(TokenIndex + Token.Len());
147
148 const int32 ValueEndIndex = TokenIndex + Value.Len();
149
150 FixPostposition(InOutText, ValueEndIndex, bHasFinal);
151
152 TokenIndex = InOutText.Find(Token, ESearchCase::CaseSensitive, ESearchDir::FromStart, ValueEndIndex);
153 }
154}
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.: