2013-04-08 44 views
1

需要一些問題的幫助。通過 「」; 「的base64,圖像/ PJPEG數據」:在C中使用正則表達式替換函數夏普

其實我有一個名爲 「圖像」 這樣一個base64字符串

data:image/pjpeg;base64,iVBORw0KGgoAAAANSUhE... 

我需要更換的零件。

我試着這樣說:

imageSrc = image.Replace("data:image/(png|jpg|gif|jpeg|pjpeg|x-png);base64,", ""); 

但它不工作。

有人對此有一個想法。

非常感謝

回答

4

您應該在Regex類上使用靜態Replace方法。

imageSrc = Regex.Replace(image, "data:image/(png|jpg|gif|jpeg|pjpeg|x-png);base64,", ""); 
+0

謝謝!!它按預期工作:-) – 2013-04-08 12:55:07

1

你只是用String.Replace,但你應該使用Regex.Replace對正則表達式。


但是,爲什麼不使用Substring

imageSrc = image.Substring(image.IndexOf(',') + 1) 

既然你知道你的字符串時,始終data:image/...開始,你就根本不需要正則表達式。

保持簡單,只需取第一個,後的子串。

1

嗯,首先你的代碼是做String.Replace而不是Regex.Replace

imageSrc = Regex.Replace(image, "data:image/(png|jpg|gif|jpeg|pjpeg|x-png);base64,", ""); 

但正則表達式是一個相當沉重的用於該用途的情況下,爲什麼不把逗號後的一切嗎?

imageSrc = image.SubString(image.IndexOf(",") + 1); 
0

String.Replace()沒有用regexp重載。改用Regex.Replace()。

-1

。在你的正則表達式錯誤,你必須指定爲圖像選擇和使用正則表達式對象,所以:

Regex.Replace("data:image/(?:png|jpg|gif|jpeg|pjpeg|x-png);base64,", ""); 

它應該工作

+0

我不明白downvote,這種解決方案的作品?! – mdelpeix 2013-04-08 12:47:48

+1

我不是downvoter,但'?:'不是必需的。該運算符僅告訴Regex引擎不要創建反向引用。您的解決方案有效,並且效率更高,但說原始正則表達式有錯誤是不正確的。我仍然認爲'Substring'是這裏最好的解決方案。 :) – mgnoonan 2013-04-11 14:43:00

+0

非常感謝這個澄清,我現在明白:) – mdelpeix 2013-04-12 11:54:46