使用替换函数与正则表达式在C夏普

本文关键字:夏普 正则表达式 替换 函数 | 更新日期: 2023-09-27 18:08:15

有个问题需要帮助。

实际上我得到了一个base64字符串名为"image",像这样:

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

我需要将部分"data:image/pjpeg;base64,"替换为"。

我试着这样做:

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

但是行不通。

有人有什么想法吗?

Thanks to lot

使用替换函数与正则表达式在C夏普

您应该在Regex类上使用静态Replace方法。

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

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

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

但是Regex对于这个用例来说是相当沉重的,为什么不把逗号后面的所有内容都去掉呢?

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

您只是使用String.Replace,但您应该使用Regex.Replace正则表达式。


但为什么不直接使用Substring呢?

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

因为你知道你的字符串总是以data:image/...开头,所以你根本不需要正则表达式。

保持简单,只取第一个,之后的子字符串

String.Replace()没有重载regexp。使用Regex.Replace()代替。

你的正则表达式有一个错误,你必须指定?:为图像选择并使用Regex对象,因此:

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

应该可以