【发布时间】:2019-11-22 17:23:37
【问题描述】:
问题是我尝试通过 HexDecode 和 HexEncode 将一个数组转换为另一个数组。一切都运行良好,直到我尝试转换两个字符,例如005002bb [Latin T'] 转换为一个字符,例如a760 [Ꝡ]。转换器工作,但它保留 ' (撇号),我想消失。我需要将 T' 视为一个单位并在输出中保留一个单位
我想我已经尝试了我所知道的一切
<script>
String.prototype.hexDecode = function ()
{
var j;
var hexes = this.match( /.{1,4}/g ) || [];
var back = "";
var lexesLength=hexes.length;
for ( j = 0; j < lexesLength; j++ )
{
back += String.fromCharCode( parseInt( hexes[ j ], 16 ) );
}
return back;
}
String.prototype.hexEncode = function ()
{
var hex, i;
var result = [];
var length = this.length;
for ( i = 0; i < length; i++ )
{
hex = this.charCodeAt( i ).toString( 16 );
result.push( ( "000" + hex ).slice( -4 ) );
}
return result;
}
Array.prototype.romanceltic = function ()
{
var roman = ['005402bb', '0041'];
var celtic = ['a760', 'A762'];
var length = this.length;
var answer = '';
var char;
var index;
for (var i = 0; i < length; i++) {
char = this[ i ];
index = roman.indexOf( char );
answer += ( index != -1 ) ? celtic [ index ].hexDecode() : char.hexDecode();
}
return answer;
}
$(function()
{
$( "input" ).click( function ( e )
{
var answer;
var content = $("#input").val();
switch ( $( this ).attr( "id" ) )
{
case "romanceltic":
{
answer = content.hexEncode().romanceltic();
}
break;
}
$("#output" ).val(answer);
} )
} );
</script>
类似的东西
我没有错误消息。它有效,但输出不是我正在等待的。据我了解,代码不能将“005402bb”视为一个整体。 我想说输入是 T' ,输出是Ꝡ。换句话说,输入由两个字符(T+' 或任何其他 +')组成,而我想要得到的输出应该是一个字符(Ꝡ 或任何其他)。我还插入了完整的脚本和另一个字符 A -> Ꝣ [A762] 并且您可以看到代码正确转换它,但我不明白第一个示例会发生什么,为什么我不能将 T+' 转换为 Ꝡ ?
【问题讨论】:
-
您能否展示给定输入的预期输出样本?另请注意,
U+0054是 T,而不是 P。 -
没错,U+0054 就是 T。我想说输入是 T',输出是Ꝡ。换句话说,输入由两个字符(T+' 或任何其他 +')组成,而我想要得到的输出应该是一个字符(Ꝡ 或任何其他)。
-
请编辑问题以包含此示例。理想情况下,您应该显示一些调用该函数的代码,显示如果它按预期工作会返回什么。
-
我看不出这段代码是如何工作的——即使是你暗示你得到的部分结果——一个字符,int the var
char将如何匹配@中的编码字节987654324@数组? -
我插入了整个脚本,我用它来转换字符和脚本中的附加字母,以表明它适用于字符到字符的转换。
标签: javascript arrays unicode hex