我目前正在编写一个Java程序,用特殊的标记语言解析文本内容并执行以下操作:
我已经在我的代码中忙于for循环了几天,我找不到问题:我的for循环将列表的第一个元素再次添加到第二个,我不明白我的代码在哪里导致对那种虫子。这段代码是“修复”几个NullPointerExceptions的结果,它不是很漂亮,我希望你们中的一些人能够阅读并给我一个关于我的错误的提示:
//we want to use the advantages of both ArrayList and String Array so we will work with both types
List<String> temp = new ArrayList<String>();
for (String line : dr.getAllLines()){
temp.add(line);
}
String[] tempArray= new String[temp.size()];
temp.toArray(tempArray); //fill the array with the contents of the temp list
for (int i=0; i<temp.size(); i++){//this for loop goes through the lines looking for our pattern
//define this pattern :
Pattern patternS = Pattern.compile("^=== (.+) ==="); //new entry is always characterized by this regex
Matcher matcherS = patternS.matcher(tempArray[i]);
if (matcherS.find()){ //if current line matches pattern
for(int ii=i+1; ii<temp.size(); ii++){ //this for loop adds content to our Eintraege list (because we found the pattern)
//clean up current line (i)
tempArray[ii-1]=tempArray[ii-1].replaceAll("[^a-zA-ZßüöäÜÖÄ|\\s+]", "");
//add current line (i) to temporary Eintrag_lines String
Eintrag_lines=Eintrag_lines + "\n" + tempArray[ii-1];
//define again pattern (for next entry)
Pattern patternStop = Pattern.compile("^=== (.+) ===");
Matcher MatcherSTOP = patternStop.matcher(temp.get(ii)); //look at next line (ii)
if(MatcherSTOP.find()){//if we find the line corresponding to the next Eintrag
//Eintraege is a list of all entries for one word (one element=one entry)
Eintraege.add(Eintrag_lines);
Eintrag_lines = ""; //clear current entry String
break;//stop adding to our Eintraege list and go back to
}
} //this for-loop adds lines for 1 entry until it finds the first line of the next entry (MatcherSTOP)
} else {
continue;
}
}
return Eintraege;
}
//method
public String getSpecificEintrag(int inputNumber){ //input "1" : first element of list
parseEintraege();
for (int i=0;i<Eintraege.size();i++){
System.out.println(i + Eintraege.get(i) + "\n next : \n");
}
//try{
// System.out.println(Eintraege.get(inputNumber-1));
// return Eintraege.get(inputNumber-1);
//} catch (IndexOutOfBoundsException e){
// System.err.println("IndexOutOfBoundsException : try a smaller number for the entry");
//}
return "";
}
初始文本文件是德语单词“Ton”的维基词典,大致以这种方式构建:
== Ton ({{Sprache|Deutsch}}) ==
=== {{Wortart|Substantiv|Deutsch}}, {{m}} ===
----------content, definitions, examples, ...------------------
=== {{Wortart|Substantiv|Deutsch}}, {{m}} ===
----------more content, ... -----------------------------------
这就是我得到的:
0
Wortart|Substantiv|Deutsch m
Deutsch Substantiv Übersicht
|Genusm
|Nominativ SingularTon
|Genitiv SingularTons
|Genitiv SingularTones
|Genitiv PluralTone
|Dativ SingularTon
|Dativ SingularTone
|Dativ PluralTonen
|Akkusativ SingularTon
|Akkusativ PluralTone
Worttrennung
Ton Pl Tone
Aussprache
IPA Lautschrift|ton Pl Lautschrift|ton
Hörbeispiele Audio|DeTonogg Pl Audio|DeTöneogg|Tone
Reime Reim|on|Deutsch
Bedeutungen
feinkörniges Verwitterungsprodukt Bodenart Töpfermaterial
Herkunft
Durch Verdumpfung von zu aus dem frühneuhochdeutschen tahen than welches wiederum aus dem spätmittelhochdeutschen dhe the Genitiv dhen then Lehm althochdeutsch thha Ton Lehm Töpfererde irdenes Gefäß hervorgegangenen war Belegt seit der Zeit um Verwandt sind das mittelniederdeutsche d das altenglische he und gotisch h Ton Lehm Allen zugrunde liegt des protogermanische germ anhn beim Trocknen schrumpfende dichter werdende Erde Während die frühen Formen noch feminin waren fand ein Genuswechsel zum maskulinen Genus wohl in Anlehnung an Lehm statt refLiteratur|AutorWolfgang Pfeifer Leitung|TitelEtymologisches Wörterbuch des Deutschen|Auflage durchgesehene und erweiterte|VerlagDeutscher Taschenbuch Verlag|OrtMünchen|Jahr|ISBN Stichwort supsupTonref
Synonyme
Lehm Mergel
Beispiele
Der Boden hier besteht zum größten Teil aus Ton
Wortbildungen
tönern Tonerde Tonpfeife Tontaube
Übersetzungen
ÜTabelle|Ülinks
en Ü|en|clay
fr Ü|fr|argile f
it Ü|it|argilla f
ca Ü|ca|argila f
pl Ü|pl|glina f Ü|pl|i m
pt Ü|pt|argila f
|Ürechts
ro Ü|ro|lut
ru Üt|ru||
sv Ü|sv|lera
es Ü|es|arcilla f
hu Ü|hu|agyag
Referenzen
Wikipedia|Ton
RefDWDS|Ton
RefDuden|TonSediment|Ton Sediment
RefCanoo|Ton
RefUniLeipzig|Ton
Quellen
next :
所以我只得到第一个条目。也许错误是非常愚蠢和简单,但我只是看不到它。
非常感谢你,感谢很长的帖子!
P.S。 :如果你需要翻译一些德语单词或变量名,请告诉我。
答案 0 :(得分:0)
我将粗略概述我为简化/改进事物所做的工作,扩展我的评论:
<xsl:template match="my:customTag">
<xsl:copy-of select="my:customFunc(@items,@classname)" />
</xsl:template>
正如您所看到的,您的代码存在一些差异: