我想要带有diacritics的元音表,但不想手动搜索符号表。

是否可以通过以下几种语言的元音列表和diacritics列表交叉生成此表:Java,PHP,Wolfram Mathematica,.NET语言等等?

我需要将字符(unicode)作为输出。

Java解决方案

我发现有一个特殊的Unicode功能:http://en.wikipedia.org/wiki/Unicode_normalization

Java从1.6 http://docs.oracle.com/javase/6/docs/api/java/text/Normalizer.html开始支持它

因此,示例代码为:

public static void main(String[] args) {
    String vowels = "aeiou";
    char[] diacritics = {'\u0304', '\u0301', '\u0300', '\u030C'};
    StringBuilder sb = new StringBuilder();

    for(int v=0; v<vowels.length(); ++v) {
        for(int d=0; d<diacritics.length; ++d) {
            sb.append(vowels.charAt(v));
            sb.append(diacritics[d]);

            sb.append(' ');
        }
        sb.append(vowels.charAt(v));
        sb.append('\n');
    }

    String ans = Normalizer.normalize(sb.toString(), Normalizer.Form.NFC);

    JOptionPane.showMessageDialog(null, ans);
}

IE。我们只是将变音符号组合在元音之后,然后对字符串进行归一化处理。

最佳答案

老实说,我还没有完全理解Szabolcs的代码在做什么,但是在这种特殊情况下,这似乎在Mathematica中使用更少的代码产生了相同的结果

data = Import["http://unicode.org/Public/UNIDATA/NamesList.txt", "Lines"];

codes = Cases[data,
 b_String /; StringMatchQ[
  b, ___ ~~ "LATIN " ~~ "CAPITAL" | "SMALL" ~~ " LETTER " ~~
   "A" | "E" | "I" | "O" | "U" ~~ " WITH " ~~ ___] :>
    FromDigits[StringTake[b, 4], 16], Infinity];

FromCharacterCode[codes]

产生
"ÀÁÂÃÄÅÈÉÊËÌÍÎÏÒÓÔÕÖØÙÚÛÜàáâãäåèéêëìíîïòóôõöøùúûüĀāĂ㥹ĒēĔĕĖėĘęĚěĨĩĪīĬ\
ĭĮįİŌōŎŏŐőŨũŪūŬŭŮůŰűŲųƗƟƠơƯưǍǎǏǐǑǒǓǔǕǖǗǘǙǚǛǜǞǟǠǡǪǫǬǭǺǻǾǿȀȁȂȃȄȅȆȇȈȉȊȋȌȍ\
ȎȏȔȕȖȗȦȧȨȩȪȫȬȭȮȯȰȱȺɆɇɨᶏᶒᶖᶙḀḁḔḕḖḗḘḙḚḛḜḝḬḭḮḯṌṍṎṏṐṑṒṓṲṳṴṵṶṷṸṹṺṻẚẠạẢảẤấẦầẨ\
ẩẪẫẬậẮắẰằẲẳẴẵẶặẸẹẺẻẼẽẾếỀềỂểỄễỆệỈỉỊịỌọỎỏỐốỒồỔổỖỗỘộỚớỜờỞởỠỡỢợỤụỦủỨứỪừỬửỮ\
ữỰựⱥⱸⱺꝊꝋꝌꝍ"

关于java - 如何自动生成元音元音表?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8777054/

10-12 04:29