Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/451.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 所有可能的可打印字符_Javascript_Canvas_Char - Fatal编程技术网

Javascript 所有可能的可打印字符

Javascript 所有可能的可打印字符,javascript,canvas,char,Javascript,Canvas,Char,我需要一个图形项目的字符字母表,所以这些字符必须是“可打印的”,特别是在画布元素中(我需要执行ctx.fillText(char…))。 目前我正在做 const alphabeth = [ 'A','B','C','D','E','F','G','H','I','L','M','N','O','P','Q','R','S','T','U','V','Z', 'a','b','c','d','e','f','g','h','i','l','m','n','o','p','q','

我需要一个图形项目的字符字母表,所以这些字符必须是“可打印的”,特别是在
画布
元素中(我需要执行
ctx.fillText(char…)
)。
目前我正在做

const alphabeth = [
    'A','B','C','D','E','F','G','H','I','L','M','N','O','P','Q','R','S','T','U','V','Z',
    'a','b','c','d','e','f','g','h','i','l','m','n','o','p','q','r','s','t','u','v','z',
    '1','2','3','4','5','6','7','8','9',
    '-','+','@','?','^','!','(',')','&','#','%','$','|','<','>'
];
const alphabeth=[
‘A’、‘B’、‘C’、‘D’、‘E’、‘F’、‘G’、‘H’、‘I’、‘L’、‘M’、‘N’、‘O’、‘P’、‘Q’、‘R’、‘S’、‘T’、‘U’、‘V’、‘Z’,
‘a’、‘b’、‘c’、‘d’、‘e’、‘f’、‘g’、‘h’、‘i’、‘l’、‘m’、‘n’、‘o’、‘p’、‘q’、‘r’、‘s’、‘t’、‘u’、‘v’、‘z’,
'1','2','3','4','5','6','7','8','9',
'-','+','@','?','^','!','(',')','&','#','%','$','|',''
];

但这仅限于我手动插入的字符。。。有没有办法得到所有可打印的字符?(或存在这些字符的列表)

假设您需要ascii表中的所有字符,则可以执行以下操作:

编辑: 我有一个无法打印的列表或字符

let caracters = []
let ban= [0,9,12,13,32] // ban list of caracters that are not printable
for(let i=0; i<127; i++ ){
    let temp = false
    ban.map(item=>{
        if(i == item){
            temp = true
        }
    })

    if(!temp){
        caracters.push(String.fromCharCode(i))
    }
    

}

console.log(caracters)
让字符=[]
let ban=[0,9,12,13,32]//禁止不可打印字符的列表
for(设i=0;i{
如果(i==项目){
温度=真
}
})
如果(!temp){
characters.push(String.fromCharCode(i))
}
}
console.log(字符)
A是一个编码字符串。JavaScript用于内部编码字符串

有关UCS-2和UTF-16码点之间的转换,请参见此。建议的图书馆是

可以使用正则表达式删除不可打印的字符。只要建立你的范围。您可以在实际编码值之前映射出所有范围并按十六进制值过滤,而不是生成正则表达式。在形成范围时,可以使用字符文字或Unicode数字

const CharClassRanges=[
“0-9”,//数字
‘a-z’,//拉丁语
'α-ω',//希腊语
'一-龯', // 日语--https://gist.github.com/terrancesnyder/1345094
“\uFB1D-\uFB4F”,//希伯来语(范围内的一些无法打印)
“!”#$%&\'()*+,.\/:;?@\\[\]^ `{124;}-'//特殊字符
];
常量PrintableUnicode=newregexp(`^[${CharClassRanges.join('''')}]*$`i');
console.log(可打印Unicode)
/**
*生成从0xFEFF0000到0xFEFFFF的UTF-16 Unicode值范围。
*@见http://www.fileformat.info/info/charset/UTF-16/list.htm
*/
函数*generatePrintableUTF16(){
常量结果=[];
for(设i=0x0000;i<0xFFFF;i++){
const value=punycode.ucs2.encode([i]);
if(可打印Unicode.test(值)){
收益值;
}
}
};
console.log([…generatePrintableUTF16()].join('\n'));//滚动查看所有
.as控制台包装{top:0;最大高度:100%!重要;}

你对“可打印”有什么严格的定义吗?“所有可打印字符”(如MAAAA)也是如此?你忘了
0
…哦,天哪,你会发现文本呈现比你想象的要复杂得多。有一些是“不可打印的”“一些文字绝对需要的字符,还有一些字符在特定的其他文字之后很有意义,但它们自己却没有意义。缺点是:你对“可打印字符”的概念很快就一落千丈了。您能告诉我们您希望避免什么情况,以便我们建议其他方法吗?@Berto99要测试一个字符,只需使用
fillText
打印它,并检查画布上的结果是否为空:-)-Berto99关于“所有字符”,什么是“所有”?全是unicode?都是ascii码?Som“all”是其中一个的子集还是另一个的子集?你知道这个函数吗?并不是所有的ASCII字符都是“可打印的”。我有一个不可打印的aka空格字符列表,这是不必要的。只有0-31中的字符不可打印。(微软Excel使用这个定义。)顺便说一句,32是空格,所以它是可打印的。他需要可以在javaScript中打印的字符,所以不使用Excel定义。是的,这是对的,32是可打印的,但我认为他不需要空间,正如你在他的文章中所看到的那样。我认为将整篇文章简化为“JavaScript使用UCS-2”,仅仅因为它暴露了单个代理是有问题的。因为“使用UCS-2”意味着只能表示BMP中的文本,这显然是错误的。其中一些文本会产生非输出,至少在我的macbook上是如此。。。也许我对可打印文件的定义还不够清楚。。。我的意思是生成一个“可见”输出(不包括ex
\n
)@Berto99那么希腊语、汉语、日语等字符计数吗?如果是这样,你需要一份详尽的清单。您的问题非常开放。@polywhill先生我希望有一份“非常详尽”的可打印字符列表