0

我有一个全小写的字符串 a 。我尝试使用以下表达式将小写字母替换为大写字母,但它无法按我的意愿工作。如何将字符串a中的小写字母变成大写字母?

using System.Text.RegularExpressions;

string a = "pieter was a small boy";
a = Regex.Replace(a, @"\B[A-Z]", m => " " + m.ToString().ToUpper());
4

5 回答 5

11

你在这里有两个问题:

  1. 您的模式需要使用\b而不是\B. 有关更多信息,请参阅此问题
  2. 由于您的字符串是小写的,并且您的模式只匹配大写 ( [A-Z]),您需要使用它RegexOptions.IgnoreCase来使您的代码正常工作。

string a = "pieter was a small boy";
var regex = new Regex(@"\b[A-Z]", RegexOptions.IgnoreCase);
a = regex.Replace(a, m=>m.ToString().ToUpper());

上述代码的输出是:

Pieter Was A Small Boy
于 2012-11-16T12:19:57.210 回答
1

如果您尝试将字符串中的所有字符转换为大写,那么只需执行string.ToUpper()

string upperCasea = a.ToUpper();

如果要进行不区分大小写的替换,请使用Regex.Replace Method (String, String, MatchEvaluator, RegexOptions)

a = Regex.Replace(a, 
                  @"\b[A-Z]", 
                  m => " " + m.ToString().ToUpper(), 
                  RegexOptions.IgnoreCase);
于 2012-11-16T11:22:52.890 回答
0

根据需要使用正则表达式,

a = Regex.Replace(a, @"\b[a-z]", m => m.ToString().ToUpper());

资源

于 2012-11-16T11:23:57.017 回答
-1
Regex.Replace(inputStr, @"[^a-zA-Z0-9_\\]", "").ToUpperInvariant();
于 2012-11-16T11:24:30.027 回答
-1

它对你很好:

string a = "pieter was a small boy";
a = a.ToUpper();
于 2012-11-16T11:25:11.517 回答