C\#한자 병 음 인 스 턴 스(다 음 자 지원)
1. C\#한자 병 음 변환(GB 2312 문자 모든 한자 집중 지원)
2. 자바 script 한자 와 병 음 상호 전환 을 실현 하 는 최종 방안
비교적 상세 하 게 쓰 여 져 있 고 소스 코드 가 제공 되 어 있 으 니 참고 하 시기 바 랍 니 다.
인터페이스의 수 요 를 고려 하여 첫 번 째 편 을 참고 했다.글 에서 작가 의 소스 코드 는 한자 의 병 음 전환 수 요 를 만족 시 킬 수 있 고 다른 특수 한 문자 에 대해 서도 보충 을 할 수 있다.부족 한 점 은 다 음 자 를 지원 하지 않 는 다 는 것 이다.다 음 자 를 지원 하 는 조회 가 필요 하기 때문에 뒤에 다른 글 을 찾 아 보 았 다.아직 만들어 지지 않 은 글 을 발견 했다.나중에 찾 아 보 니 한자 병 음 에 대해 마이크로소프트 가 Microsoft Visual Studio International Pack 을 제 공 했 고 강력 했다.그래서 해 봤 어 요.
우선 nuget 에서 해당 하 는 가방 을 참조 합 니 다.
PinYinConverter 찾기
간단 한 데모
한번 해 보 세 요.사용 도 아주 간단 합 니 다.ChineseChar 류 를 직접 사용 하여 포장 하고 바 꾸 면 됩 니 다.
string ch = Console.ReadLine();
ChineseChar cc = new ChineseChar(ch[0]);
var pinyins = cc.Pinyins.ToList();
pinyins.ForEach(Console.WriteLine);
결 과 는 다음 과 같다.우 리 는 줄 의 다 음 자 는 hang,heng,xing 세 개가 있 는데 여기 서 음표 도 나 와 서 정말 편리 하 다 는 것 을 볼 수 있다.그리고 제 가 필요 한 기능 은 은행 에 입력 한 다음 에 병 음 으로 바 꾸 는 것 입 니 다.yinhang,yinheng,yinxing 입 니 다. 첫 번 째 조합 은 yh,yx 입 니 다.ChineseChar 같은 게 있 으 면 생각 이 쉬 워 요.
한자 병 음 류 패키지
1.먼저 입력 한 한 자 를 나 누 기
2.이 어 한자 마다 ChineseChar 로 여러 개의 병 음 을 얻는다.
3.숫자 를 빼 고,다시 빼 고,첫 글 자 를 추출 하고,다시 조합 하면 된다.
그래서 도움말 류 를 써 서 포장 하고 바 꾸 었 습 니 다.코드 는 다음 과 같 습 니 다.
public class PinYinConverterHelp
{
public static PingYinModel GetTotalPingYin(string str)
{
var chs = str.ToCharArray();
//
Dictionary<int, List<string>> totalPingYins = new Dictionary<int, List<string>>();
for (int i = 0; i < chs.Length; i++)
{
var pinyins = new List<string>();
var ch = chs[i];
//
if (ChineseChar.IsValidChar(ch))
{
ChineseChar cc = new ChineseChar(ch);
pinyins = cc.Pinyins.Where(p => !string.IsNullOrWhiteSpace(p)).ToList();
}
else
{
pinyins.Add(ch.ToString());
}
// ,
pinyins = pinyins.ConvertAll(p => Regex.Replace(p, @"\d", "").ToLower());
//
pinyins = pinyins.Where(p => !string.IsNullOrWhiteSpace(p)).Distinct().ToList();
if (pinyins.Any())
{
totalPingYins[i] = pinyins;
}
}
PingYinModel result = new PingYinModel();
foreach (var pinyins in totalPingYins)
{
var items = pinyins.Value;
if (result.TotalPingYin.Count <= 0)
{
result.TotalPingYin = items;
result.FirstPingYin = items.ConvertAll(p => p.Substring(0, 1)).Distinct().ToList();
}
else
{
//
var newTotalPingYins = new List<string>();
foreach (var totalPingYin in result.TotalPingYin)
{
newTotalPingYins.AddRange(items.Select(item => totalPingYin + item));
}
newTotalPingYins = newTotalPingYins.Distinct().ToList();
result.TotalPingYin = newTotalPingYins;
//
var newFirstPingYins = new List<string>();
foreach (var firstPingYin in result.FirstPingYin)
{
newFirstPingYins.AddRange(items.Select(item => firstPingYin + item.Substring(0, 1)));
}
newFirstPingYins = newFirstPingYins.Distinct().ToList();
result.FirstPingYin = newFirstPingYins;
}
}
return result;
}
}
public class PingYinModel
{
public PingYinModel()
{
TotalPingYin = new List<string>();
FirstPingYin = new List<string>();
}
//
public List<string> TotalPingYin { get; set; }
//
public List<string> FirstPingYin { get; set; }
}
호출 방식:
Console.WriteLine(" :");
string str = Console.ReadLine();
var strs = PinYinConverterHelp.GetTotalPingYin(str).TotalPingYin;
var frists = PinYinConverterHelp.GetTotalPingYin(str).FirstPingYin;
Console.WriteLine(" :" + String.Join(",", strs));
Console.WriteLine(" :" + String.Join(",", frists));
Console.WriteLine();
결과:현재 일부 생소 한 글 자 는 모두 지원 할 수 있 지만,일부 너무 편 파 적 인 것 은 아직 시도 해 보지 않 았 지만,일반 한자 에서 병 음 을 바 꾸 는 것 에 대해 서 는 다 음 자 를 지원 하 는 것 만으로 도 충분 하 다.
여 기 는 Microsoft Visual Studio International Pack 이라는 확장 패키지 안의 한자 병 음 기능 만 사 용 했 습 니 다.사실은 중국어,일본어,한국어,영어 등 각국 의 언어 가방 도 있 고 상호 전환,획득,글자 수 획득,심지어 필획 수 획득 등 강력 한 기능 을 실현 하 는 방법 을 제공 합 니 다.관심 이 있 는 친구 들 은 자체 적 으로 api 를 조회 할 수 있 습 니 다.
소스 코드 공유
공 유 는 일종 의 미덕 이다.어떤 때 는 강 한 글 이 우리 의 기술 차원 을 향상 시 킬 수 있 지만 어떤 때 는 더 많은 수요 가 업무 차원 이 고 많은 작은 지식 응용의 공 유 는 우리 에 게 업무 차원 의 문 제 를 향상 시 킬 수 있다.나 눔 의 지식 이 조금 만 쓸모 가 있다 면 남 의 자식 을 해치 지 않 고 크 든 작 든 공부 하 는 것 이 므 로 여러분 들 이 용감하게 나 눌 수 있 기 를 바 랍 니 다.
마지막 으로 소스 코드 를 공유 하여 여러분 께 잘못 과 부족 한 점 이 있 으 면 지적 해 주시 기 바 랍 니 다.
주소
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
C#Task를 사용하여 비동기식 작업을 수행하는 방법라인이 완성된 후에 이 라인을 다시 시작할 수 없습니다.반대로 조인(Join)만 결합할 수 있습니다 (프로세스가 현재 라인을 막습니다). 임무는 조합할 수 있는 것이다. 연장을 사용하여 그것들을 한데 연결시키는 것이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.