LINUX.ORG.RU

История изменений

Исправление invy, (текущая версия) :

Вроде оно, спасибо:

static final int
 SBase = 0xAC00,
 LBase = 0x1100, VBase = 0x1161, TBase = 0x11A7,
 LCount = 19, VCount = 21, TCount = 28,
 NCount = VCount * TCount, // 588
 SCount = LCount * NCount; // 11172

public static String decomposeHangul(char s) {
 int SIndex = s - SBase;
 if (SIndex < 0 || SIndex >= SCount) {
  return String.valueOf(s);
 }
 StringBuffer result = new StringBuffer();
 int L = LBase + SIndex / NCount;
 int V = VBase + (SIndex % NCount) / TCount;
 int T = TBase + SIndex % TCount;
 result.append((char)L);
 result.append((char)V);
 if (T != TBase) result.append((char)T);
  return result.toString();
}

Исходная версия invy, :

Вроде оно, спасибо:

public static String decomposeHangul(char s) {
 int SIndex = s - SBase;
 if (SIndex < 0 || SIndex >= SCount) {
  return String.valueOf(s);
 }
 StringBuffer result = new StringBuffer();
 int L = LBase + SIndex / NCount;
 int V = VBase + (SIndex % NCount) / TCount;
 int T = TBase + SIndex % TCount;
 result.append((char)L);
 result.append((char)V);
 if (T != TBase) result.append((char)T);
  return result.toString();
}