Project

General

Profile

Actions

Feature #10002

closed

String swapcase

Added by randy15 (Andreas Runk) almost 10 years ago. Updated almost 7 years ago.

Status:
Closed
Assignee:
-
Target version:
-
[ruby-core:63475]

Description

Hi, the ruby version 2.1.2 has a problem with the .swapcase function and german letters.
E.g. "ä".swapcase does return "ä" but should be "Ä".


Related issues 1 (0 open1 closed)

Related to Ruby master - Feature #10085: Add non-ASCII case conversion to String#upcase/downcase/swapcase/capitalizeClosedduerst (Martin Dürst)Actions

Updated by nobu (Nobuyoshi Nakada) almost 10 years ago

  • Tracker changed from Bug to Feature

Updated by matz (Yukihiro Matsumoto) almost 10 years ago

The current implementation of case conversion methods in String class only understands ASCII characters.
We'd like to enhance it when possible. But we have to know how each character should be converted.
For example, how should we convert "ß" (eszett)?

Matz.

Updated by naruse (Yui NARUSE) almost 10 years ago

At this time, ffi-icu or twitter-text-rb is useful.

Updated by davispuh (Dāvis Mosāns) almost 10 years ago

It have been already figured out by Unicode Standard, so just have to implement it. Look at Default Case Algorithms in section 3.13 and Case Mappings in section 5.18. Mappings can be viewed in SpecialCasing.txt (and UnicodeData.txt) also CaseFolding.txt could be useful.

From there "ß" (LATIN SMALL LETTER SHARP S) in uppercase would be "SS" (LATIN CAPITAL LETTER S) and it's user's responsibility to know that generally they are not reversible.

Also useful to read Character Properties, Case Mappings & Names FAQ

Updated by zzak (zzak _) almost 10 years ago

We should delegate to @emboss everytime we need to convert ß...

Updated by shyouhei (Shyouhei Urabe) almost 10 years ago

We are talking about swapcase, not folding. The "generally they are not reversible" you say is the difficulty we are facing here. Also as you cited CaseFolding.txt, you should have been aware of type T folding, which is impossible without locale information.

If you think you can implement it, please show us.

Dāvis Mosāns wrote:

It have been already figured out by Unicode Standard, so just have to implement it. Look at Default Case Algorithms in section 3.13 and Case Mappings in section 5.18. Mappings can be viewed in SpecialCasing.txt (and UnicodeData.txt) also CaseFolding.txt could be useful.

From there "ß" (LATIN SMALL LETTER SHARP S) in uppercase would be "SS" (LATIN CAPITAL LETTER S) and it's user's responsibility to know that generally they are not reversible.

Also useful to read Character Properties, Case Mappings & Names FAQ

Updated by duerst (Martin Dürst) over 9 years ago

  • Related to Feature #10085: Add non-ASCII case conversion to String#upcase/downcase/swapcase/capitalize added

Updated by duerst (Martin Dürst) almost 7 years ago

  • Status changed from Open to Closed

This has actually been implemented by Feature #10085, so it can be closed.

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0Like0Like0Like0