我使用的舊遊戲機編譯器,但這種編譯器只接受ANSI字符。這是一個問題,因爲遊戲是日文,需要UTF-8。作爲一種變通方法,我寫的執行已與sed的十六進制同等字節值來代替文檔中的每個日文字符批處理腳本。sed的:分隔符之間單獨更換每個字符
主要sed腳本是這樣的:
chcp 1252
sed "s|\[terminator\]|,$FF|g"^
;"s|ャ|,$00|g"^
;"s|ィ|,$01|g"^
test.asm > test2.asm
因此,像一個字符串 「ャィャ[終結者]」 將被轉換爲 「$ 00 $ 01 $ 00 $ FF」。
問題是可以插入到文本字符串中的非日語字符(例如數字和標點符號)也在代碼中的其他任何地方使用,所以我不得不求助於這些字符的替代版本以防止在每次評論之前都會轉換分號,這會使編譯過程失敗。但是,這種解決方法促使用戶複製和粘貼,而不是隻是打字他們就像他們通常會每一種備選字符到哪個字符串,他們覺得自己修改。
所以,我的問題是,我怎麼能告訴sed只替換字符串分隔符(管道),而不是在文檔中到處進行替代的角色?
換句話說,我希望SED更換的東西,看起來像這樣:
<label> dw $1234 : db |ャィャ[terminator]| ; Comment (blah ャィャ blah)
這(管道和領先的逗號將會在後面被刪除):
<label> dw $1234 : db |,$00,$01,$00,$FF| ; Comment (blah ャィャ blah)
通知的註釋部分保持不動。
您應該編輯您的問題。沒有人似乎理解它,或者有人已經有答案。這部分令人困惑:「但我想用更方便用戶的方式將字符串保留在原始文檔中」 –
完成「。現在它更有意義嗎? –
當然。你甚至得到了一個迴應,它可能會成爲一個風滾草問題 –