私は現在、JavaScriptでbase64画像をデコードするために次のことを行っています。
var strImage = "";
strImage = strToReplace.replace("data:image/jpeg;base64,", "");
strImage = strToReplace.replace("data:image/png;base64,", "");
strImage = strToReplace.replace("data:image/gif;base64,", "");
strImage = strToReplace.replace("data:image/bmp;base64,", "");
上記のとおり、最も標準的な4つの画像タイプ(jpeg、png、gif、bmp)を受け入れています。
ただし、これらの画像の一部は非常に大きく、1つ1つを置換して4〜5回スキャンすることは恐ろしい無駄であり、非常に非効率的です。
シングルパスでbase64画像文字列のdata:image部分を確実に取り除く方法はありますか?
おそらく、文字列の最初のカンマを検出することによって?
前もって感謝します。
正規表現を使用できます。
var strImage = strToReplace.replace(/^data:image\/[a-z]+;base64,/, "");
^
はを意味します文字列の先頭data:image
はdata:imageを意味します\/
は/を意味します[a-z]+
はを意味しますaとzの間の1つ以上の文字;base64,
は; base64、を意味しますvar solution = string.split("base64,")[1];
変数文字列を2番目の部分よりも「base64」で分割します。
これは私のために働きました:
var strImage = strToReplace.split(',')[1];
ヘッダーを取り除く方法を探しているこの質問に出くわしました。だからこれを共有したかっただけです:
Regex.Replace(strToReplace, @"^.+?(;base64),", string.Empty))
これは、次の方法を説明する優れた answer から取得しました。
「abc」を数えることなく、「abc」が見つかるまで、できるだけ少ない文字に一致させます。
この正規表現を使う
/[data:image\/[a-z]*;[a-z0-9]*,.*]/gm