EraseTag { /*******************************************/ /* SAKURAスクリプトタグのパターン */ /* a)"\" に続いて1文字 */ /* b)"\" に続いて1個以上の "_" と1文字 */ /* c)(a)(b)に続く "[" から "]" */ /* d)(a)(b)に続く1桁数字 */ /* "\\" は "\" に */ /* "[" から "]" の中の "\]" を考慮に入れる */ /*******************************************/ _str = "" while 1 { if (_chr = SUBSTR(_argv[0],0,1)) != "\" { if _chr == "" ; break // 終端なら抜ける _str += _chr _argv[0] = ERASE(_argv[0],0,1) } else { _argv[0] = ERASE(_argv[0],0,1) //---- "_" を取り除く for _i = 0 ; (_chr = SUBSTR(_argv[0],0,1)) == "_" ; _i++ { _argv[0] = ERASE(_argv[0],0,1) } if _chr == "" ; break // 終端なら抜ける //---- 1文字削除する _argv[0] = ERASE(_argv[0],0,1) if _chr == "0" && _i == 0 ; _str += "(0)" elseif _chr == "1" && _i == 0 ; _str += "(1)" elseif _chr == "\" && _i == 0 ; _str += "\" else { case SUBSTR(_argv[0],0,1) { //---- 1桁数字を取り除く when "0","1","2","3","4","5","6","7","8","9" { _argv[0] = ERASE(_argv[0],0,1) } //---- "[" から "]" を取り除く(ネストに対応) //---- "\]" を考慮に入れる when "[" { _argv[0] = ERASE(_argv[0],0,1) _chr = "" _nest = 0 while _nest >= 0 { _old = _chr _chr = SUBSTR(_argv[0],0,1) if _chr == "" ; break // 終端なら抜ける elseif _chr == "[" ; _nest++ elseif _chr == "]" && _old != "\" ; _nest-- _argv[0] = ERASE(_argv[0],0,1) } } } } } } //---- 見栄えを良くする _str = REPLACE(_str,"(0)(1)","(1)") _str = REPLACE(_str,"(1)(0)","(0)") _str = REPLACE(_str,"(0)(0)","(0)") _str = REPLACE(_str,"(1)(1)","(1)") _str }