2011-07-13 11 views
0

このJavaScript正規表現と同じC#は何ですか?JS#RegEx式に相当するC##

str.replace(/(\w)\w*/g, "$1"); 

Javascriptを入力+結果(希望):

Input: I like pie! 
Result: i l p! 

C#入力+結果(ティムのバージョンを使用すると、下記掲載):

Input: I like pie! 
Result: \1 \1 \1! 

他のアイデア?

+2

だからあなたがしたいですあなたが理解していないものを、あなたが理解していない新しいものに変換してください。代わりに正規表現について何かを学ぶのはどうですか? –

+1

OPの防衛に来る:あなたはJSや.NETのような大きく異なる実装の間でそれらを正しく翻訳するために、さまざまな正規表現のフレーバーに関するかなりの知識が必要です。正規表現をC#の文字列にコピーしたばかりの場合、その結果は微妙に間違っています。 –

+0

実際には、そのコードは文字列のすべての単語を最初の文字で置き換えます。 C#のRegEx.Replace()は、入力した内容と単に一致するものだけを置き換えるため、C#にどのように変換するのかはわかりません。 "$ 1"はJavaScript固有のものです。 –

答えて

4
resultString = Regex.Replace(subjectString, "([A-Z0-9_])[A-Z0-9_]*", "$1", RegexOptions.IgnoreCase); 

\wは、JavaScriptの正規表現よりも、.NET正規表現でより多くのことを一致するため、この変更が必要です。

(あなたはまた、非ASCII文字/数字を含む単語と一致する場合を除き、 `場合は、@ "(\ w)は\ wの*" 良いだろう。)

+0

私のポストで編集されたように、上記の結果は\ 1 \ 1 \ 1! –

+0

上記のコード作業で@ "\ 1"を@ "$ 1"に置き換えてください。 –

+0

@Mr。スミス:そうです、申し訳ありません。ヘッドアップをありがとう! –

1
var result = Regex.Replace(input, @"(?<x>\w)\w*", @"${x}");