我有一個充滿小寫的字符串a。我試圖用下面的表達式來替換大寫的小寫字母,但它不起作用。如何將字符串a中的小寫字母變成大寫字母?如何用正則表達式替換大寫的小寫?
using System.Text.RegularExpressions;
string a = "pieter was a small boy";
a = Regex.Replace(a, @"\B[A-Z]", m => " " + m.ToString().ToUpper());
我有一個充滿小寫的字符串a。我試圖用下面的表達式來替換大寫的小寫字母,但它不起作用。如何將字符串a中的小寫字母變成大寫字母?如何用正則表達式替換大寫的小寫?
using System.Text.RegularExpressions;
string a = "pieter was a small boy";
a = Regex.Replace(a, @"\B[A-Z]", m => " " + m.ToString().ToUpper());
如果你想對所有字符的字符串轉換爲大寫然後簡單地做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);
這不回答問題。他特別要求使用正則表達式的用例。我認爲這會自動暗示他想要在捕獲組中使用ToUpper,或者至少與正則表達式有關。 – 2014-12-19 05:03:43
這個正則表達式也增加了空間。這不是OP希望 –
刪除的空間,現在可以嗎? @Cthulhu –
您還需要將'\ B'更改爲'\ b'。 –
Regex.Replace(inputStr, @"[^a-zA-Z0-9_\\]", "").ToUpperInvariant();
它工作正常,爲您提供:
string a = "pieter was a small boy";
a = a.ToUpper();
您這裏有兩個問題:
\b
而不是\B
。有關更多信息,請參見question。[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
「兩個問題」赫赫 –
是'a.ToUpper()'不夠??? –
你想做什麼?將整個字符串轉換爲大寫? – Habib
我認爲OP通過這個[**'link' **](http://stackoverflow.com/a/3235446/1577396)並且不能顛倒'ToUpper()'的解決方案。 –