gpt4 book ai didi

c# - 使用 RegEx 对字符串进行大写和小写

转载 作者:太空宇宙 更新时间:2023-11-03 19:42:47 41 4
gpt4 key购买 nike

我正在尝试根据索引将字符串转换为大写和小写。

我的字符串是一个 LanguageCodecc-CC 其中 cc 是语言代码而 CC 是国家代码。用户可以输入任何格式,如“cC-Cc”。我正在使用正则表达式来匹配数据是否为 ​​cc-CC 格式。

var regex = new Regex("^[a-z]{2}-[A-Z]{2}$", RegexOptions.IgnoreCase); 
//I can use CultureInfos from .net framework and compare it's valid or not.
//But the requirement is it should allow invalid language codes also as long
//The enterd code is cc-CC format

现在,当用户输入某些内容时,cC-Cc 我尝试将前两个字符小写,然后将最后两个字符大写

我可以使用 - 拆分字符串,然后将它们连接起来。

var languageDetails = languageCode.Split('-');
var languageCodeUpdated = $"{languageDetails[0].ToLowerInvariant()}-{languageDetails[1].ToUpperInvariant()}";

我想我是否可以避免创建多个字符串并相应地使用 RegEx 本身来进行大写和小写。

在搜索相同内容时,我发现了一些使用 \L\U 的解决方案,但我无法将它们用作 C# 编译器显示错误。此外,RegEx.Replace() 有一个我无法理解的参数或委托(delegate) MatchEvaluator

C# 中,我们可以使用 RegEx 将大写字母替换为小写字母,反之亦然。

最佳答案

.NET 正则表达式不支持大小写修改运算符。

您可以使用MatchEvaluator:

var result = Regex.Replace(s, @"(?i)^([a-z]{2})-([a-z]{2})$", m => 
$"{m.Groups[1].Value.ToLower()}-{m.Groups[2].Value.ToUpper()}");

参见 C# demo .

详情

  • (?i) - RegexOptions.IgnoreCase mopdiofier
  • 的内联版本
  • ^ - 字符串的开始
  • ([a-z]{2}) - 捕获第 1 组:2 个 ASCII 字母
  • - - 连字符
  • ([a-z]{2}) - 捕获第 2 组:2 个 ASCII 字母
  • $ - 字符串结尾。

关于c# - 使用 RegEx 对字符串进行大写和小写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50601437/

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