ERLEDIGT
JA
JA
ANTWORTEN
0
0
ZUGRIFFE
1041
1041
EMPFEHLEN
-
10.01.10 23:28 #1
- Registriert seit
- Jun 2002
- Ort
- Saarbrücken (Saarland)
- Beiträge
- 9.724
- Blog-Einträge
- 29
Hallo,
ich weis nicht ob das Verwenden von Zusatzbilbiotheken erlaubt ist aber mit ICU4J und FreeTTS bekommt man das gewünschte recht einfach hin.
http://site.icu-project.org/ ( Wenn man eclipse installiert hat findet man ICU unter %ECLIPSE_HOME%/plugins/com.ibm.icu_xxxxxx.jar )
http://www.tutorials.de/forum/java/3...ml#post1649104
http://freetts.sourceforge.net/docs/index.php
http://www.jugsaar.de/?p=73
Hier mal eine prototypische Realisierung:
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90
package de.tutorials; import static java.lang.String.format; import static java.util.Calendar.HOUR_OF_DAY; import static java.util.Calendar.MINUTE; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.GregorianCalendar; import java.util.Locale; import java.util.Scanner; import java.util.regex.Matcher; import java.util.regex.Pattern; import com.ibm.icu.text.RuleBasedNumberFormat; import com.sun.speech.freetts.Voice; import com.sun.speech.freetts.VoiceManager; /** * @author Tom * */ public class NaviComputer { RuleBasedNumberFormat ruleBasedNumberFormat = new RuleBasedNumberFormat(Locale.GERMANY, RuleBasedNumberFormat.SPELLOUT); boolean exit = false; public static void main(String[] args) { new NaviComputer().run(); } private void run() { Scanner input = new Scanner(System.in); while (!exit) { System.out.print("> "); String line = input.nextLine(); process(line); } input.close(); } private void process(String input) { if (input.startsWith("exit")) { exit = true; } else if (input.matches("\\d+")) { String numberSpelledOut = ruleBasedNumberFormat.format(Long.parseLong(input)); System.out.println(numberSpelledOut); } else if (input.startsWith("/clock")) { Calendar now = new GregorianCalendar(); int hour = now.get(HOUR_OF_DAY); int minute = now.get(MINUTE); System.out.println(format("%s Uhr %s (%s)", ruleBasedNumberFormat.format(hour), ruleBasedNumberFormat.format(minute), new SimpleDateFormat("HH:mm").format(now.getTime()))); } else if (input.startsWith("/number ")) { String numberSpelledOut = input.substring(8); try { Number number = ruleBasedNumberFormat.parse(numberSpelledOut); System.out.println(number); } catch (ParseException e) { System.out.println(format("Konnte die Eingabe %s nicht in eine Zahl Umwandeln! (%s)", numberSpelledOut, e.getMessage())); } } else if (input.startsWith("/speak ")) { try { String number = input.substring(7); String numberSpelledOut = ruleBasedNumberFormat.format(Long.parseLong(number)); VoiceManager voiceManager = VoiceManager.getInstance(); Voice voice = voiceManager.getVoice("kevin"); try { voice.allocate(); voice.speak(numberSpelledOut); } finally { voice.deallocate(); } } catch (Exception e) { e.printStackTrace(); } } else { Matcher matcher = Pattern.compile("(\\d+)").matcher(input); String s = input; while (matcher.find()) { String number = matcher.group(); String numberSpelledOut = ruleBasedNumberFormat.format(Long.parseLong(number)); s = s.replaceAll(number, numberSpelledOut); } System.out.println(s); } } }
Ausgabe:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
> 15 fünfzehn > 102 hundertzwei > 851 achthunderteinundfünfzig > /clock dreiundzwanzig Uhr fünfundzwanzig (23:25) > In 500m hinter dem nächsten Baum rechts In fünfhundertm hinter dem nächsten Baum rechts > 25 fünfundzwanzig > /number fünfundzwanzig 25 > /speak 25
Gruß TomJava rocks!
How to become a good Java Programmer?
Does IT in Java and .Net
The only valid measurement of code quality: WTFs / minute
Blog
Xing
Twitter
Ähnliche Themen
-
[Quiz#15] Thomas Darimont (Java Genetischer Algorithmus)
Von Thomas Darimont im Forum ArchivAntworten: 1Letzter Beitrag: 11.04.10, 18:58 -
[Quiz #9] Thomas Darimont (Java)
Von Thomas Darimont im Forum ArchivAntworten: 0Letzter Beitrag: 21.07.09, 23:35 -
[QUIZ#7] Thomas Darimont (Java)
Von Thomas Darimont im Forum ArchivAntworten: 1Letzter Beitrag: 08.12.08, 09:45 -
[QUIZ #2] Thomas Darimont (Java)
Von Thomas Darimont im Forum ArchivAntworten: 0Letzter Beitrag: 28.09.08, 14:08 -
[QUIZ#1] Thomas Darimont (Java)
Von Thomas Darimont im Forum ArchivAntworten: 2Letzter Beitrag: 22.09.08, 14:13






Login




