匹配字符的第一次出现

本文关键字:第一次 字符 | 更新日期: 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编码的字符串数据。