當我問這個問題Transform patterns of code points in a binary 1小時前:我需要像集轉換[$a-z]
成這樣的二進制:奇怪字節轉換代碼點集合轉換成二進制
01 24 // $
00 // interval between 2 code points
61 00 // a
7a 00 // z
我得到像集從[$a-z]
的UnicodeSet網站。它只需要您輸入一個模式並生成一個代碼點集。
我已經重寫了一些我簡單但不重要的UnicodeSet二進制集轉換器。現在,我通過在UnicodeSet站點上啓用Escape選項來讀取它們的轉義表格\u
,而不是閱讀真實代碼點。我這樣做是因爲瀏覽器會從返回的集合中去掉一些字符。
然而,我自己將模式[:age=5.0:]&[[:gc=L:][:gc=Nl:][:gc=Mn:][:gc=Mc:][:gc=Nd:][:gc=Pc:]\$_]
由模式[:age=5.0:]&[[:gc=L:][:gc=Nl:][:gc=Mn:][:gc=Mc:][:gc=Nd:][:gc=Pc:]\$_]
返回的集合的最終輸出看起來有錯誤的代理。
我的閱讀和輸入設定跳過個別代碼點功能nextCodePoint
:
function nextCodePoint()
{
u_ch = input.charCodeAt(inputOffset);
__escaped__ = false;
// Handle escape
if (u_ch === 0x5C)
{
__escaped__ = true;
u_ch = input.charCodeAt(inputOffset + 1);
// Handle \u
if (u_ch === 0x75)
{
inputOffset += 2;
// Skip the left XXXX base
u_start = inputOffset;
inputOffset += 4;
// Skip the right XXXX base (limited for messy patterns)
if (input.charCodeAt(inputOffset) !== 0x5C)
inputOffset += 4;
return parseInt(input.slice(u_start, inputOffset), 16);
}
}
++inputOffset;
return u_ch;
}
任何想法?
到底是什麼輸入,什麼是預期的輸出,並且那是什麼功能的實際輸出? – Bergi
@Bergi輸入是一個包含由UnicodeSet站點返回的代碼點集的文件,我們在這裏放置諸如'[:gc = L:]'的模式。我的問題中甚至有一個。輸出非常大,很難確定我不能放在這裏。 – Hydro
@Bergi請忽略我關於較大代碼點的警告。我看起來錯了。 – Hydro