J'ai un flux de chaîne où il a un caractère inconnu au début et à la fin.Javascript - comment détecter un caractère inconnu au début et à la fin?
Comment puis-je détecter que le premier caractère inconnu et le dernier? J'ai essayé de suivre mais il ne correspond pas avec des listes \uxxxx
tels que:
\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f
?
code:
var ab2str = function(buf) {
var bufView = new Uint8Array(buf);
var encodedString = String.fromCharCode.apply(null, bufView);
return decodeURIComponent(escape(encodedString));
};
function in(data) {
var ch = ab2str(data); ch = ch.toString('utf8');
switch (ch) {
case "\u0002":
console.log('>>> STARTED');
break;
case "\u0003":
console.log('>>> ENDED');
break;
default:
//var WINDOWS_1252 = '\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !"#$%&\'()*+,-./:;<=>[email protected][\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ';
console.log('????????? why always default ???????');
break;
}
}
EDIT: flux de données. \u0002
et \u0003
ne correspondant pas.
EDIT: Parser travaille
serial.onReceive.addListener(function(receiveInfo) {
if (receiveInfo.connectionId !== connectionId) {
console.log("FAIL: connectionId mismatch");
return;
}
var ch = ab2str(receiveInfo.data);
ch = ch.toString('utf8');
var check = ch.charCodeAt(0);
if(check == 2) {
console.log('>>> STARTED');
lineBuffer = "";
}
switch (ch) {
default:
lineBuffer += ab2str(receiveInfo.data);
console.log('>>> ???: ' , ab2str(receiveInfo.data));
var check_end = lineBuffer.charCodeAt(lineBuffer.length-1);
if(check_end == 3) {
var cake = lineBuffer.substring(1);
cake = cake.substring(0,cake.length-1);
console.log('>>> CAKE: ' , cake);
lineBuffer = "";
}
break;
}
});
Pourquoi étiqueter jQuery? – GolezTrol
Il y a plus de caractères que 0001 à 001f. (environ 65000 de plus dans UCS2). Utilisez charCodeAt pour voir de quel caractère il s'agit: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/charCodeAt – GolezTrol
Eh bien, voici votre réponse. Le caractère est 2 (=/u0002). Maintenant que vous avez confirmé que c'est en effet, vous pouvez revenir à la découverte de pourquoi votre code ne l'a pas trouvé. C'est peut-être parce que 'ch' contient la chaîne entière, pas seulement le premier caractère, et à cause de cela le cas ne correspond pas. – GolezTrol