Da freut man sich, sein 'Problem' spielerisch mit einer neuen, anscheinend netten Sprache zu lösen, und dann sowas! Weiß jemand zufällig Rat?
Als workaround:
1 | wordarray.each do |word| |
2 | word.gsub!(/[äöü]/) do |char| |
3 | case char |
4 | when 'ä' |
5 | then 'Ä' |
6 | when 'ö' |
7 | then 'Ö' |
8 | when 'ü' |
9 | then 'Ü' |
10 | end
|
11 | end
|
12 | word.upcase! |
13 | end
|
wie geht das elegant?
Da "ä".upcase nicht geht, ist die Frage, wie es denn gemacht werden kann. Upcase ist locale-unsensitiv, d.h. nur Zeichen aus [a-z] match. Ich möchte aber Umlaute auch vergrößern, noch besser wäre allerdings eine unspezifische Lösung, die auch für andere Schreibräume gilt.
Wie lassen sich denn Zeichen einer Klasse durch spezifizierte Gegenstücke ersetzen? D.h. mit str.gsub!( pattern, replacement ) soll ein ä aus pattern mit dem Ä aus replacement ersetzt werden. Ist das möglich? Zumindest die case-Geschichte müßte doch eleganter gehen.
translate: str.tr( fromString, toString ) -> aString puts 'äöü'.tr('äöü', 'ÄÖÜ')
ISO 8859-1 replace_char = 'àáâãäåæçèéêëìíîïðñòóôõöøùúûüý' replace_with = 'ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝ' ruby, grossbuchstaben, umwandeln, uppercase, lowercase, upcase, downcase, umlaut, trema, krouzek, gross, klein, regexp, umwandeln, zeichen
Da so jedes Zeichen immer nur durch ein anderes ersetzt werden kann, funktioniert diese Lösung natürlich nicht fürs ß, welches durch SS ersetzt werden müßte. (nur mal so als Denkanstoß, als Nicht-Rubi-Experte kann ich leider keine Lösung beitragen).
Kennst Du das schon: http://icu4r.rubyforge.org/ Metasuchmaschinen sind immer Dein Freund, wenn man denn weiß wonach zu suchen ist ;)
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.