String case: Difference between revisions
Content added Content deleted
(→{{header|Nim}}: case not handled correctly) |
(→{{header|Wren}}: Replaced original with a more extensive solution.) |
||
Line 3,526: | Line 3,526: | ||
=={{header|Wren}}== |
=={{header|Wren}}== |
||
{{libheader|Wren-str}} |
{{libheader|Wren-str}} |
||
The 'Str' class supports the following methods: |
|||
⚫ | |||
# ''lower'' - converts all letters to lower case |
|||
var s = "alphaBETA" |
|||
# ''upper'' - converts all letters to upper case |
|||
⚫ | |||
# ''capitalize'' - converts only the first letter to upper case |
|||
⚫ | |||
# ''title'' - converts the first letter of each word to upper case |
|||
# ''swapCase'' - swaps the case of each letter |
|||
However, support is limited to letters which have both lower and upper case variants with codepoints < 256. This means that the lower case letters 'ß' and 'ÿ' are never changed by these methods. Although it would be possible to regard 'SS' as the upper case equivalent of 'ß', unfortunately this might not 'round-trip' and would not be compatible with the ''Char.upper'' method in any case. It has not therefore been done. |
|||
The 'Utf8' class recently acquired the first four of the above methods though with considerably wider (albeit still incomplete) Unicode coverage. In particular the upper case variants 'ẞ' and 'Ÿ' are now supported - the former was introduced into official German orthography in 2017 (though is optional) and, of course, now round-trips. Title case for 4 supported digraphs is automatically applied by the ''capitalize'' or ''title'' methods when they are the first character of the string (or, word, in the case of the latter). |
|||
⚫ | |||
var strs = ["alphaBETA", "ação", "o'hare O'HARE o’hare don't"] |
|||
System.print("Using 'Str' class methods:") |
|||
for (s in strs) { |
|||
System.print(" original : %(s)") |
|||
System.print(" lower : %(Str.lower(s))") |
|||
⚫ | |||
System.print(" capitalize : %(Str.capitalize(s))") |
|||
System.print(" title : %(Str.title(s))") |
|||
System.print(" swapCase : %(Str.swapCase(s))") |
|||
System.print() |
|||
} |
|||
var strs2 = ["Stroßbùrri", "ĥåçýджк", "DŽLjnj"] |
|||
System.print("Using 'Utf8' class methods:") |
|||
for (s in strs2) { |
|||
System.print(" original : %(s)") |
|||
System.print(" lower : %(Utf8.lower(s))") |
|||
System.print(" upper : %(Utf8.upper(s))") |
|||
System.print(" capitalize : %(Utf8.capitalize(s))") |
|||
System.print(" title : %(Utf8.title(s))") |
|||
System.print() |
|||
⚫ | |||
{{out}} |
{{out}} |
||
<pre> |
<pre> |
||
Using 'Str' class methods: |
|||
ALPHABETA |
|||
original : alphaBETA |
|||
alphabeta |
|||
lower : alphabeta |
|||
upper : ALPHABETA |
|||
capitalize : AlphaBETA |
|||
title : AlphaBETA |
|||
swapCase : ALPHAbeta |
|||
original : ação |
|||
lower : ação |
|||
upper : AÇÃO |
|||
capitalize : Ação |
|||
title : Ação |
|||
swapCase : AÇÃO |
|||
original : o'hare O'HARE o’hare don't |
|||
lower : o'hare o'hare o’hare don't |
|||
upper : O'HARE O'HARE O’HARE DON'T |
|||
capitalize : O'hare O'HARE o’hare don't |
|||
title : O'hare O'HARE O’hare Don't |
|||
swapCase : O'HARE o'hare O’HARE DON'T |
|||
Using 'Utf8' class methods: |
|||
original : Stroßbùrri |
|||
lower : stroßbùrri |
|||
upper : STROẞBÙRRI |
|||
capitalize : Stroßbùrri |
|||
title : Stroßbùrri |
|||
original : ĥåçýджк |
|||
lower : ĥåçýджк |
|||
upper : ĤÅÇÝДЖК |
|||
capitalize : Ĥåçýджк |
|||
title : Ĥåçýджк |
|||
original : DŽLjnj |
|||
lower : džljnj |
|||
upper : DŽLJNJ |
|||
capitalize : DžLjnj |
|||
title : DžLjnj |
|||
</pre> |
</pre> |
||