1

SVG文字列があり、幅と高さの2つの属性を抽出する必要があります。

Titanium Studioフレームワークでこれを使用しているため、一部のXMLパーサーを使用できません。そのため、どこにもDOMがありません。

SVGは次のようになります。

<svg xmlns="http://www.w3.org/2000/svg" xlink="http://www.w3.org/1999/xlink" version="1.1" width="768" height="1005" space="preserve">
    LOT OF DATA HERE... <></> etc
</svg>

私はこのようなものから始めました:

var width = svgString.match( /^<svg.\width.=.(.*)$>/gm );

午前4時ですが、私の脳は機能していません。誰かが助けることができればそれは素晴らしいでしょう!どうも。

4

4 に答える 4

4

jmar777のコードが機能すると仮定すると、オプションのスペース、オプションの引用符を許可し、値がsvgタグ自体からのものであることを確認する、より保守的な別の正規表現を使用します(svgタグにない場合は他のタグからのものではありません)。これらのsvgをどこで取得し、どのように形成するかによって、これはあなたのケースに違いをもたらすかもしれません。

var width = svgString.match(/^<svg[^>]*width\s*=\s*\"?(\d+)\"?[^>]*>/)[1];
var height = svgString.match(/^<svg[^>]*height\s*=\s*\"?(\d+)\"?[^>]*>/)[1];
于 2012-05-17T02:06:14.510 に答える
1
var width = svgString.match(/^<svg.*?width="(\d+)/)[1];
var height = svgString.match(/^<svg.*?height="(\d+)/)[1];
于 2012-05-17T01:59:00.287 に答える
0

オプションパーツは必ずオプションにしてください。(参照: 正規表現の「幅」と = 記号の間のドット)

var width = svgString.match( /^<svg.*width\s*=\s*\"(\d*)\"$>/gm );

(\s がすべての空白に一致し、\d がすべての数字に一致する場合)

于 2012-05-17T02:00:16.587 に答える
0

Here is a solution that worked in all cases i tested.

const width = parseInt(svg.substring(svg.indexOf("width")).split('=')[1].match(/^\d+|\d+\b|\d+(?=\w)/g)[0]);
const height = parseInt(svg.substring(svg.indexOf("height")).split('=')[1].match(/^\d+|\d+\b|\d+(?=\w)/g)[0]);
于 2018-09-01T19:20:03.793 に答える