中文偽春菜後援會論壇  

打印

[問題] 關於OnTranslate內RE_REPLACE無效的問題...

關於OnTranslate內RE_REPLACE無效的問題...

我是在這裡看到OnTranslate的使用法:
OnTranslateの使い方

之前使用的一直都是第一種土辦法XD
後來發現在RSS瀏覽的時候,只要帶有標點都會顯示出\w9之類的...
雖然可以湊合,不過看起來還是怪怪的@@"

因此試驗了第二種辦法,也就是使用
複製內容到剪貼板
代碼:
_text = TextOnlyTranslator(_text,'TextOnlyTranslatorFunc')
來進行轉換.

但是我測試下來,不知為何只要是
複製內容到剪貼板
代碼:
_text = RE_REPLACE(_text ,'!(?=[^!])', '!\w9')
這樣帶有RE_REPLACE的就都轉換無效?
我的代碼是這麼寫的,不知道是否有寫錯才導致無效化Orz|||
複製內容到剪貼板
代碼:
TextOnlyTranslator
{
    _string = RE_SPLIT(_argv[0],'\\(\\|q\[.*?\]\[.*?\]|[!&8cfijmpqsn]\[.*?\]|[-*+014567bcehntuvxz]|_[ablmsuvw]\[.*?\]|__(t|[qw]\[.*?\])|_[!?+nqsV]|[sipw][0-9])')
    _n = ARRAYSIZE(_string)
    _tag = RE_GETSTR()
    _tr = ''
    _qs = 0
   
    for _i = 0 ; _i < _n ; _i++ {
        _tr += EVAL("%(_argv[1])('%(_string[_i])',%(_qs))")
        _tr += _tag[_i]
        if '\_q' _in_ _tag[_i] {
            _qs = ! _qs
        }
    }
   
    _tr
}

TextOnlyTranslatorFunc
{
    //_argv[0] = 置換対象テキスト
    //_argv[1] = クイックセクション内か否か

    _text = _argv[0]
    if ! _argv[1] {
        _text = REPLACE(_text, "、", "、\w5")
        _text = REPLACE(_text, ",", ",\w9")
        _text = REPLACE(_text, "。", "。\w9\w5")
        _text = RE_REPLACE(_text ,'…(?=[^…])', '…\w9\w5')
        _text = RE_REPLACE(_text ,'?(?=[^?])', '?\w9\w5')
        _text = RE_REPLACE(_text ,'!(?=[^!])', '!\w9\w5')
    }
    _text
}
OnTranslate
{
   //とりあえず最初のおまじない(一時変数にとりあえず代入)
   _text = reference0
   _text = TextOnlyTranslator(_text,'TextOnlyTranslatorFunc')
   
   //ここはおまじないのつもりで。消しちゃだめです。
   //(一時変数で置き換え処理したものを結果として返す)
   _text
}
只要是_text = RE_REPLACE(_text ,'!(?=[^!])', '!\w9\w5')就都無效這樣..
不知是什麼原因?@@
主頁更新啦:cat-fish.net

TOP

是怎樣的轉換無效?

「!(?=[^!])」這個正規表現式所表達的意思是
「接續著不包含!之字串的!」
要注意的是!後面必須至少有一個以上的字
因此在整個字串中最後面的!後面要是沒有字的話是不會置換的

例子:
「不準動這是搶劫!把笑點交出來!!」
這個字串會被置換成
「不準動!\w9\w5這是搶劫!!\w9\w5把笑點交出來!!」

----

嘛...重新看了一下你的問題
你問的是「某些情況下!的置換會失效」對吧?
原因應該是!的後面直接追加了Sakura語法,
例如:
「不準動!!\n這是測試。」→失敗
「不準動!!這是測試。」→成功

會產生這種結果主要跟我上面提及的特性有關,
因為你所使用的程式碼在切割字串時是以Sakura語法為單位,
而!又常跟\n連在一起,
結果切字串時經常把!留作最後的字…

解決的方法是將「!(?=[^!])」改為「!(?=[^!])|!$」
希望能幫得上忙...(滾走)

[ 本帖最後由 時原砂 於 2008-11-3 08:29 編輯 ]
末月返想 - 創意的存放處
二次元斷層 - 成果展現之所在

惰性是大敵。

TOP

嗯!!現在有效了!

其實我的情況沒有說明白||||
我是在腳本輸入那裡直接輸入一些文字及符號來測試的,
而在錯誤記錄的Script那裡沒有正常出現\w5\w9之類的轉換。
於是我就認為它無效這樣……||||

不管怎樣現在OK了!
非常感謝XDDD
主頁更新啦:cat-fish.net

TOP



當前時區 GMT+8, 現在時間是 2020-10-22 14:34

Processed in 0.014228 second(s), 10 queries, Gzip enabled.

清除 Cookies - 聯繫我們 - 中文偽春菜後援會 - Archiver - WAP - TOP - 界面風格