匹配字符的第一次出现
本文关键字:第一次 字符 | 更新日期: 2023-09-27 18:20:07
我有一个Base64字符串,可以根据用户上传的文件以data:image/png;base64
或任何其他格式(如data:video/mp4
)开头,我正在为一个函数编写ajax调用,该函数应该接受该Base64字符串并获取其类型和稍后的
data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RD.....
因此,如果所有的base64字符串都以:data:type/type;base64,
开头,我想找到第一个出现的,
,然后将data:type/type;base64
保存在一个字符串中,以了解类型,并使我原来的base64串看起来像这样:data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RD....
我做的是:
$.ajax({
type: 'POST',
url: "Uploadfile.aspx/uploadfile",
data: '{ "fileData" : "' + data+ '" }',
contentType: 'application/json; charset=utf-8',
dataType: 'json',
success: function (msg) {
alert('Image saved successfully !');
}
});
其中data
是整个base64字符串
c#
[WebMethod(EnableSession = true)]
public static void uploadfile(string fileData)
{
Regex r = new Regex(/[^;]*/);
Match m = r.Match(fileData);
while (m.Success)
{
// how can i continue my function
}
}
我的逻辑正确吗?或者有更好的方法可以做到这一点,我该如何继续我的功能?任何人都可以帮助我。我被卡住了,我不知道如何继续
你可以试试这样的东西:
Regex r = new Regex("^data:(.*?);base64,(.*?)$");
Match m = r.Match(fileData);
if(m.Success) {
string mimeType = m.Groups[1].Value;
}
符合模式:
数据:MimeType;base64,FileData
意味着m.Groups[1]
将包含MIME类型,而m.Groups[2]
将包含base64编码的字符串数据。