Php 我如何确定人名是否表示所有格;s";德语中是否应该省略?
我正在尝试构建一个函数,该函数将为我提供正确的德语所有格形式的名称。假设我有三个名字:拉尔斯、亚历克斯和蒂娜 所有格为“拉尔斯高速公路、亚历克斯高速公路和蒂纳斯高速公路”。Php 我如何确定人名是否表示所有格;s";德语中是否应该省略?,php,Php,我正在尝试构建一个函数,该函数将为我提供正确的德语所有格形式的名称。假设我有三个名字:拉尔斯、亚历克斯和蒂娜 所有格为“拉尔斯高速公路、亚历克斯高速公路和蒂纳斯高速公路”。 如果名字的最后一个字母是S或X,我必须加一个撇号,在其他情况下,我只需要在名字上加上S 但是,当我使用我的函数时,它总是在每个名字(拉尔斯、亚历克斯、蒂纳斯)的末尾加上一个S 我做错了什么 编辑:出于文档目的-如果您希望将规则应用于所有常用名称,这是一种解决方案 function possessive_de($name) {
如果名字的最后一个字母是S或X,我必须加一个撇号,在其他情况下,我只需要在名字上加上S 但是,当我使用我的函数时,它总是在每个名字(拉尔斯、亚历克斯、蒂纳斯)的末尾加上一个S 我做错了什么 编辑:出于文档目的-如果您希望将规则应用于所有常用名称,这是一种解决方案
function possessive_de($name) {
$lastCharacter = $name[strlen($name) - 1];
$excluded = ['s','x','z','ß'];
if(substr($name, -2) == 'ce') {
return $name . '’';
} else if (in_array($lastCharacter, $excluded)) {
return $name . '’';
} else {
return $name . 's';
}
}
产出将是:
echo possessive_de("Tina"); // echoes Tinas
echo possessive_de("Alex"); // echoes Alex'
echo possessive_de("Lars"); // echoes Lars'
echo possessive_de("Leibniz"); // echoes Leibinz'
echo possessive_de("Maurice"); // echoes Maurice'
|
应该是&&
您要检查最后一个字符
是否不是x
,是否不是s
或者,检查最后一个字符
是否为x
或是否为s
仅与您的问题略微相关,但您可以将函数简化为:
function possessive_de($name)
{
$lastCharacter = $name[strlen($name) - 1];
$excluded = [
's',
'x',
'z',
'ß',
];
if (in_array($lastCharacter, $excluded)) {
return $name . '’';
}
return $name . 's';
}
根据我们在评论中的小对话,如果你承认有更多的名称结尾可能表示省略所有格s,而使用撇号,请尝试以下方法:
注意所有代码示例都假定$name
- 是非空字符串(仅由空格组成)
- 修剪
- 不是空字符串
function possessive_de($name)
{
$lastCharacter = $name[strlen($name) - 1];
$excluded = [
's',
'x',
'z',
'ß',
];
if (in_array($lastCharacter, $excluded)) {
return $name . '’';
}
return $name . 's';
}
function possessive_de($name)
{
$endings = [
'ce',
's',
'ss',
'tz',
'x',
'z',
'ß',
];
foreach ($endings as $ending) {
if (substr($name, -strlen($ending)) === $ending) {
return $name . '’';
}
}
return $name . 's';
}