折叠式德语


9

给定德语字符串和大小写指示(小写/大写/标题),将字符串折叠到该大小写。

技术指标

  1. 输入仅包含az加号äöüß-,.;:!?'"(大写和/或小写)。
  2. 目标案例可以视为一致类型的任何三个唯一值(请指定它们是什么);三个字符或三个数字或三个位模式。(当前不允许使用其他格式来阻止将案例说明“外包”。如果您认为应该允许使用其他格式,请添加注释。)
  3. Titlecase表示除字母后的字母(字母为az加号äöüß)以外的所有字母均为大写。

陷阱

  1. ß需要大写时,它必须变为。某些折叠式内置程序和库无法执行此操作。

  2. ß需要为大写字母时,它必须变为Ss。某些折叠式内置程序和库无法执行此操作。

  3. ss可能出现在文本中,并且绝对不能转换为ß

例子

大写die Räder sagen "ßß ss" für dich, wegen des Öls!
DIE RÄDER SAGEN "ẞẞ SS" FÜR DICH, WEGEN DES ÖLS!

小写 die Räder sagen "ßß ss" für dich, wegen des Öls!
die räder sagen "ßß ss" für dich, wegen des öls!

标题大小写die Räder sagen "ßß ss" für dich, wegen des Öls!
Die Räder Sagen "Ssß Ss" Für Dich, Wegen Des Öls!


2
输出是Ss什么?另外,示例输入中缺少ss
Rod

@Rod SS Ss ss。你能告诉我为什么不清楚吗?
亚当


我可以使用Python函数设置三个唯一值吗?(请参阅我的回答)
HyperNeutrino,

不,这正是通过指定三个唯一值必须为字符,数字或位模式来防止的。
亚当

Answers:


6

Japt42 40字节

@Oliver节省了2个字节

r'ßQ=7838d)u mV,@W¦vW=X ?Xv :X¥Q?"Ss":Xu

哇,这花了很多精力。输入是要转换的字符串和一个字符:u大写,v小写m和标题。

在线测试!


您需要}0吗?
奥利弗

@Oliver是的,否则,它将...等等,也许不会...
ETHproductions '18



3

果冻,50个字节

⁽ñWỌ”ß;y⁸Œu
Ñ⁾SsÇ⁼?€1¦”ß
Œl
Çe€“Ġẹṇṣ‘ỌÇ;Øa¤Œg⁸ṁ⁹Ŀ€

在线尝试!

完整程序。

哎呀,这花了很多时间打高尔夫球...

参数1:字符串(可能需要转义)
参数2:1大写字母,2标题大写字母,3小写字母。


1

干净649个 279 275 274 246字节

是的,这123个 122 94字节的进口,这是比所有其他的答案已经不再。

from StdList import++,map,flatten
import StdLib,StdInt,StdBool,Text.Unicode,Text.Unicode.UChar
$ =fromInt
? =isAlpha
^ =toUpper
@0s=map^s
@1s=map toLower s
@2s=flatten(map(\[h:t]=if($223==h||h> $999)[$83,$115][^h]++ @1t)(groupBy(\a b= ?a== ?b)s))

在线尝试!

定义函数@,取IntUString和返回一个UString
方便起见,UString(Clean的默认处理Unicode方式)只是-的类型别名,[Int]它是Int包含字符串中字符的unicode代码点的列表。
不便的是Text.Unicode.UChar它确实很长,而且我不能import StdEnv因为定义StdChar与中的定义冲突Text.Unicode.UChar(因为它们不打算一起使用)。

对于大写,小写和标题,这三个值分别为0、1和2。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.