10

SVG パス内の座標を変数に置き換えたい。(ジャバスクリプトで)。svg パスには多くの種類がある可能性がありますが、具体的な例でサポートを受けることは非常に役立ちます。

d = "M27,0C27,21,4,34,-13,23C22,18,-27,9,-27,0";

この SVG パスを次のように変換したい

var x = [];
var x[0] = 27; x[1] = ...

d = "M + x[0] + "," + y[0] 
    + "C" 
    + x[0] + "," + y[0] + ","
    + x[1] + "," + y[1] + ","
    + x[2] + "," + y[2] + ","
    + "C" 
    + x[3] + "," + y[3] + ","
    + x[4] + "," + y[4] + ","
    + x[5] + "," + y[5];

したがって、私の問題は、適切なjavascript RegExpを見つけてすべての変数を抽出し、それを使用して指定されたSVGパスを生成することです。

私が実際に行っているのは、特定の svg を表す Javascript オブジェクトを作成することであり、座標を個別に設定できるようにしたいと考えています。

どんな助けでも大歓迎です

thx、マーティン

更新: 受け入れられた回答の隣には、素晴らしい raphael.js ライブラリに SVG パスを分析するための非常に便利な方法もあります。

http://raphaeljs.com/reference.html#Raphael.parsePathString

4

3 に答える 3

0

私はJavaScriptを学んでいるので、変換を手伝うことはできませんが、この正規表現は役立つはずです:

\-?\d+

文字を避けながら、指定した文字列からすべての座標を取得します[a-zA-Z]

しかし、多かれ少なかれ仕事をするJavaのコードを提供することができます。

Pattern p = Pattern.Compile("\-?\d+");
Matcher m = p.matcher(yourPathString);
while(m.Find())
    \\add the match to your new table or something you want
于 2013-11-07T09:54:46.090 に答える