병 음 을 입력 하여 주식 의 코드 를 찾다.
주식 류 앱 에 서 는 사용자 가 번 호 를 기억 하지 못 할 때 도 주식 을 정확하게 찾 을 수 있 도록 주식 검색 / 조회 기능 이 필요 하 다.코코아 차이 나 회원 '야 키' 는 병 음 을 입력 해 주식 을 찾 는 코드 를 공유 해 애플 개발 자 들 에 게 도움 이 되 기 를 희망 했다.
- (NSString*)getPinYin:(NSString *)nsstrHZ
{
NSString* strPY = @"";
char pinyin[6] = {0};
memset(pinyin , 0 , sizeof(pinyin));
char ch = 0;
unsigned char high = 0, low = 0;
const char* pszHZ = [nsstrHZ cStringUsingEncoding:gbEncoding];
for(int i = 0; i < strlen(pszHZ); i++, low = 0)
{
high = (unsigned char)(pszHZ[i]);
if (high < 128 && high != 32 && high != '*') //
{
ch = (char)high;
if(ch >= 'a' && ch <= 'z')
ch -= 32; //Make upper
strPY = [strPY stringByAppendingFormat:@"%c", ch];
continue;
}
if((i+1) < strlen(pszHZ))
low = (unsigned)(pszHZ[i+1]);
if (high >= 129 && low > 64 )
{
switch(high)
{
case 163: // ASCII
pinyin[0] = low - 128; // ,
// , ?
//if (pinyin[1] < 48 && pinyin[1] > 57 && pinyin[1] < 65 && pinyin[1] > 90 && pinyin[1] < 97 && pinyin[1] >122)
// strcpy(pinyin,"");
strPY = [strPY stringByAppendingFormat:@"%s", pinyin];
break;
case 162: //
if(low > 160)
strcpy(pinyin, PYCharIndex[low - 161]);
else
strcpy(pinyin, " ");
strPY = [strPY stringByAppendingFormat:@"%s", pinyin];
break;
default: // ,
if(183 == high && 240 == low) //
{
pinyin[0] = 'F';
}
else
{
int index = PYCodeIndex[high-129][low-64];
if (index == 0)
strcpy(pinyin, " ");
else
{
const char* code = PYCode[index-1];
pinyin[0] = code[0];
}
if (0xB3 == high && 0xA4 == low) // (" " 0xB3A4) Chang
pinyin[0] = 'C';
strPY = [strPY stringByAppendingFormat:@"%s", pinyin];
}
break;
}
i++;
}
}
//
{
unsigned char test[8] = {0};
memset(test, 0 , sizeof(test));
if(strlen(pszHZ) >= 4)
{
memcpy(test, pszHZ, 4);
if(0xD6 == test[0] && 0xD8 == test[1] && 0xC7 == test[2] && 0xEC == test[3])
{
//0xD6D8 0xC7EC
const char* ss = [strPY cStringUsingEncoding:NSASCIIStringEncoding];
NSString* strTemp = @"";
strPY = [strTemp stringByAppendingFormat:@"C%s", ss+1];
}
else if(0xCE == test[0] && 0xF7 == test[1] && 0xB2 == test[2] && 0xD8 == test[3])
{
//0xCEF7 0xB2D8
const char* ss = [strPY cStringUsingEncoding:NSASCIIStringEncoding];
NSString* strTemp = @"";
strPY = [strTemp stringByAppendingFormat:@"XZ%s", ss+2];
}
}
else if(strlen(pszHZ) >= 8)
{
memcpy(test, pszHZ, 8);
if(0xD5 == test[0] && 0xD0 == test[1] && 0xC9 == test[2] && 0xCC == test[3] &&
0xB3 == test[4] && 0xC9 == test[5] && 0xB3 == test[6] && 0xA4 == test[7])
{
//0xD5D0 0xC9CC 0xB3C9 0xB3A4
const char* ss = [strPY cStringUsingEncoding:NSASCIIStringEncoding];
if(4 == strlen(ss))
strPY = @"ZSCZ";
else if(strlen(ss) > 4)
{
NSString* strTemp = @"";
strPY = [strTemp stringByAppendingFormat:@"ZSCZ%s", ss+4];
}
}
}
}
return strPY;
}
위 코드 에 필요 한 배열 변 수 를 다운로드 합 니 다.
SymbolSearchController.txt.zip (30 K)
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.