2016-04-01 15 views
1

文字列(数字のみ)があり、特定の数字をstring.Emptyに置き換えたい。私はstring.Replaceを使用していますが、問題はそれがすべての数字から与えられた数字を置き換えることです。私もRegex.Replaceを試しましたが、同じ結果が得られました。例えば文字列の数字を置き換える - C#

コード:

string original = "301, 3301, 2301, 5301, 8301"; 
string modified = original.Replace("301", string.Empty); 
string usingRegex = Regex.Replace(original, "301", string.Empty); 

実際の結果:

", 3, 2, 5, 8" 

期待される結果:

"3301, 2301, 5301, 8301" 
+2

分割して、不要なものを削除します(LINQでは簡単です)。その後、残りの文字列を一緒に 'string.Join'します。 – zimdanen

+4

数字の文字列がありますか?なぜこれを整数の配列に分割しないのですか? – Kritner

+1

それらをすべて数字に変換し、301を取り除きます。それは正しく動作するはずですか? – psj01

答えて

1
const string original = "301, 3301, 2301, 5301, 8301, 301"; 
var lst = original.Split (',').Select(s => s.Trim()).Where(item => item != "301"); 
var replaced = string.Join(", ", lst); 

これは文字列を分割し、正確に301のエントリだけを削除し、結果を結合します。これは広義にはtokenizationのプロセスです。

1

試してみてください。

string usingRegex = Regex.Replace(original, "(^301 ,|, 301)", string.Empty); 

これは,で終わるか,で終わる301と一致します。

0

このようなあなたの正規表現 何かで\ bに試してみてください。これは便利だった場合、私に知らせて

string original = "301, 3301, 2301, 5301, 8301"; 
string modified = original.Replace("301", string.Empty); 
string usingRegex = Regex.Replace(original, @"\b301\b", string.Empty); 

0

あなたは

string pattern = @"\b301\b"; 
string input = "301, 3301, 2301, 5301, 8301"; 
string result = Regex.Replace(input, pattern, string.Empty, RegexOptions.None).TrimStart(','); 
0

非常に素晴らしいが、作業や正規表現ではない、このようにしてみてください。 指定された文字列から任意の数値を削除します(!)。

string original = "301, 3301, 2301, 5301, 8301"; 
string usingRegex = Regex.Replace(original, "(, 5301)*(^5301,)*", ""); 
Console.WriteLine(original); 
Console.WriteLine(usingRegex); 
関連する問題