gpt4 book ai didi

php - 有没有办法在 PHP 正则表达式中指定 "any character but [aeiou]"?

转载 作者:行者123 更新时间:2023-12-02 05:31:40 24 4
gpt4 key购买 nike

我正在开发一个 C# Web 服务,其响应始终是事物的集合。因为我太懒了,不想显式定义事物的集合,所以我实现了一个泛型类,表示可以使用 XML 序列化的事物的集合。

现在,ASP.NET 通常会给泛型起一些可怕的名字,比如 CollectionOfOrdenPago(在西类牙语中,“orden de pago”的意思是“付款顺序”)或 PageOfLineaDetalleReporte(在西类牙语中,“línea de detalle de reporte”的意思是“报告详情行”)。我想给我的收藏起更合理的名称,例如 OrdenesPago(“付款订单”)或 LineasDetalleReporte(“报告详细信息行”),因此我定义了以下方法:

internal static string Pluralize(string input)
{
int i = 0;
while (++i < input.Length)
if (!char.IsLower(input[i]))
break;

StringBuilder builder = new StringBuilder(input);
if ("aeiou".IndexOf(input[i - 1]) == -1)
builder.Insert(i++, 'e');
builder.Insert(i, 's');

return builder.ToString();
}

此 Web 服务由我也在开发的 PHP 网站使用。由于将名词复数化似乎不是调用 C# Web 服务的充分理由,因此我在 PHP 中重新实现了 Pluralize 函数:

function pluralize($element) {
return preg_replace_callback('/^([A-Z][a-z]*)([A-Z]|$)/', function($args) {
// If the first word ends in consonant, append "e" first. After that, append "s".
return preg_replace('/([B-DF-HJ-NP-TV-Z])$/i', '\1e', $args[1]) . "s{$args[2]}";
}, $element);
}

可是我还是不开心。术语[B-DF-HJ-NP-TV-Z] 丑陋。与在 C# 方法中一样,我想将“不在 [aeiou] 中的字符”指定为术语。这可能吗?

最佳答案

使用否定字符类

[^AEIOU]

代替 [B-DF-HJ-NP-TV-Z]

注意根据@fireeyedboy的评论,这个正则表达式也匹配非字母字符。

关于php - 有没有办法在 PHP 正则表达式中指定 "any character but [aeiou]"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5584860/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com