Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何自动生成变音元音表?_Java_Php_.net_Wolfram Mathematica_Diacritics - Fatal编程技术网

Java 如何自动生成变音元音表?

Java 如何自动生成变音元音表?,java,php,.net,wolfram-mathematica,diacritics,Java,Php,.net,Wolfram Mathematica,Diacritics,我想使用元音表,但不想手动搜索符号表 是否可以通过交叉下列语言中的元音列表和元音列表来生成此表:Java、PHP、Wolfram Mathematica、.NET语言等等 我需要有字符(unicode)作为输出 Java解决方案 我发现这有一个特殊的Unicode特性: Java从1.6开始就支持它 因此,示例代码是: public static void main(String[] args) { String vowels = "aeiou"; char[] diacriti

我想使用元音表,但不想手动搜索符号表

是否可以通过交叉下列语言中的元音列表和元音列表来生成此表:Java、PHP、Wolfram Mathematica、.NET语言等等

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

Java解决方案

我发现这有一个特殊的Unicode特性:

Java从1.6开始就支持它

因此,示例代码是:

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);
}
publicstaticvoidmain(字符串[]args){
字符串元音=“aeiou”;
char[]diacritics={'\u0304','\u0301','\u0300','\u030C'};
StringBuilder sb=新的StringBuilder();

对于(intv=0;v我挖掘了一些旧的Mathematica代码,我将把它粘贴在这里。你可以用任何方式来取悦它。错误是意料之中的

uninames = 
  StringSplit[
   Import["http://unicode.org/Public/UNIDATA/NamesList.txt", "Text"], 
   "\n"];

uniNameList = ({ToExpression["16^^" <> First[#]], 
      StringJoin@Riffle[Rest[#], "\n"]} & /@ 
    DeleteCases[
     Flatten /@ 
       Split[StringSplit[#, "\t" .., All] & /@ Take[uninames, All], 
        First[#2] === "" &] /. "" -> Sequence[], 
     x_ /; StringTake[First[x], 1] === "@"]);

uniRangeList = {FromDigits[#1, 16], 
     FromDigits[#3, 15], #2} & @@@ (Rest /@ 
     Select[StringSplit[#, "\t"] & /@ uninames, First[#] == "@@" &]);

Clear[unicodeName]
Set[unicodeName[#1], #2] & @@@ uniNameList;
Set[unicodeName[n_Integer /; #1 <= n <= #2], #3] & @@@ uniRangeList;
unicodeName[s_String /; StringLength[s] === 1] := 
 unicodeName[First@ToCharacterCode[s]]
unicodeName[_] := ""
(不包括æ等),或

(在这种情况下,需要手动过滤以消除ESH-ʃ之类的东西)

然后您可以从charactercode/@vouelcodes执行
,但默认字体可能不会显示所有字符

第一种方法让我

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

请注意,这种按Unicode名称进行过滤的方法并不可靠,而且该表可能很容易丢失一些元音(例如,我似乎找不到上面的无点I)

老实说,我还没有完全解释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]
产生

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

你可以试着从我假设你只想要罗马字母中提取信息。任何匹配拉丁小号大写字母A | E | I | O | U的东西都应该是相关的。我不知道这有多强大,如果你想要像|这样的东西。另外,请注意,Mathematica在基本多语言平面之外没有正确地支持Unicode:还有,你呢像是什么?你认为它是元音(它肯定是在Norwegian)吗?
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]
"ÀÁÂÃÄÅÈÉÊËÌÍÎÏÒÓÔÕÖØÙÚÛÜàáâãäåèéêëìíîïòóôõöøùúûüĀāĂ㥹ĒēĔĕĖėĘęĚěĨĩĪīĬ\
ĭĮįİŌōŎŏŐőŨũŪūŬŭŮůŰűŲųƗƟƠơƯưǍǎǏǐǑǒǓǔǕǖǗǘǙǚǛǜǞǟǠǡǪǫǬǭǺǻǾǿȀȁȂȃȄȅȆȇȈȉȊȋȌȍ\
ȎȏȔȕȖȗȦȧȨȩȪȫȬȭȮȯȰȱȺɆɇɨᶏᶒᶖᶙḀḁḔḕḖḗḘḙḚḛḜḝḬḭḮḯṌṍṎṏṐṑṒṓṲṳṴṵṶṷṸṹṺṻẚẠạẢảẤấẦầẨ\
ẩẪẫẬậẮắẰằẲẳẴẵẶặẸẹẺẻẼẽẾếỀềỂểỄễỆệỈỉỊịỌọỎỏỐốỒồỔổỖỗỘộỚớỜờỞởỠỡỢợỤụỦủỨứỪừỬửỮ\
ữỰựⱥⱸⱺꝊꝋꝌꝍ"