文字列としてスラッシュをつくる


hasegawayosuke

with(/http/) x=source; with(x) with(<xml><s>://0xAC100101/</s></xml>) x=concat(s);with(document)with(x)location=concat(cookie); 「://」を含めたいのでE4X使ってますけど、もうちょっと。

E4Xを使わずに「/」を作れるのかなぁとボンヤリと考えました。前提としては、当日の日記にもあるとおり、以下の文字を使ってのコーディングは禁止となります。

' (クオート)
" (ダブルクォート)
\ (バックスラッシュ)
% (パーセント)
+ (プラス)
- (マイナス)
* (アステリスク)
= (等号)
, (カンマ)
. (ドット)
そのうえ、今回は、明示的にE4Xを使わないためにも

<
>
をも使わない方向でと考えてみました。ここまですると本当に文字列を切り出してくるのは難しい…と感じましたがそれでもなんとか。ふぅ。さらに、趣味的な問題なのですが、「/」とトポロジー的に同相なグリフをもつ記号しか使わないでイケルかな?などと変なことまで考え込む始末です。簡単に言うと、これから使う字のひとつひとつを手でつまんで空中にぶらさげると紐(ひも=string)になるという。ま、stringなスラッシュが欲しいという趣向です。で、得られたもののひとつが以下に。


/[^|]/(/|/)[[]|[]]

ええと、Mozilla拡張の構文で、


var result = regexp(str);
/*
regexp 正規表現オブジェクトの名、もしくは正規表現リテラル
str 正規表現にマッチするかどうかの対象となる文字列
*/
というのがありまして、それを使いました。この構文を使うと、execメソッドそのものが使えるんですね。regexpとして、/[^|]/を使い、それがexec関数なので引数としてのinputプロパティとして、/|/を渡してさしあげる、そうしておいて戻り値のマッチ結果がArrayオブジェクトとして取得されるのでその0番目=[|]番目がstring型のスラッシュになってめでたしめでたしでした。なお、inputプロパティとして/|/の正規表現リテラルになっているのですが、自動的な型変換のおかげで実質的には、'/|/'のstringなのですね。ですから「|」ではないものに最後にマッチするのは「/」。

ヒモだけでヒモを表現するというなんとも趣味的なおはなしでした。