2012-11-16 57 views
-1

我有一個充滿小寫的字符串a。我試圖用下面的表達式來替換大寫的小寫字母,但它不起作用。如何將字符串a中的小寫字母變成大寫字母?如何用正則表達式替換大寫的小寫?

using System.Text.RegularExpressions; 

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

是'a.ToUpper()'不夠??? –

+0

你想做什麼?將整個字符串轉換爲大寫? – Habib

+1

我認爲OP通過這個[**'link' **](http://stackoverflow.com/a/3235446/1577396)並且不能顛倒'ToUpper()'的解決方案。 –

回答

0

如果你想對所有字符的字符串轉換爲大寫然後簡單地做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); 
+2

這不回答問題。他特別要求使用正則表達式的用例。我認爲這會自動暗示他想要在捕獲組中使用ToUpper,或者至少與正則表達式有關。 – 2014-12-19 05:03:43

0

使用正則表達式如你所願,

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

Source

+0

這個正則表達式也增加了空間。這不是OP希望 –

+0

刪除的空間,現在可以嗎? @Cthulhu –

+0

您還需要將'\ B'更改爲'\ b'。 –

-1
Regex.Replace(inputStr, @"[^a-zA-Z0-9_\\]", "").ToUpperInvariant(); 
-1

它工作正常,爲您提供:

string a = "pieter was a small boy"; 
a = a.ToUpper(); 
8

您這裏有兩個問題:

  1. 你的模式需要使用\b而不是\B。有關更多信息,請參見question
  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 
+3

「兩個問題」赫赫 –

相關問題