在我的代码中,我试图根据其使用的字符检查一个句子是莫尔斯还是英语。如果它在莫尔斯,Decode运行。如果是英语,则运行Encode功能。出于某种原因,诸如“朋友”和“鸡”之类的某些词语显示为莫尔斯,但像“开始”和“斑马”这样的词语却没有。为什么会这样?
var input, output, startType;
var inputArray = [];
input = (prompt('Enter the word(s) or sentence(s) that you wish to convert.')).toLowerCase();
function checkInput(input) {
var i, il;
for (i = 0, il = input.length; i < il; i++) {
if (input.charAt(i) === ('a'||'b'||'c'||'d'||'e'||'f'||'g'||'h'||'i'||'j'||'k'||'l'||'m'||'n'||'o'||'p'||'q'||'r'||'s'||'t'||'u'||'v'||'w'||'x'||'y'||'z')) {
startType = 'normal';
break;
}
else {
startType = 'morse';
console.log(i);
}
}
}
checkInput(input);
function Encode(input) {
var i, il;
for (i = 0, il = input.length; i < il; i++) {
if (input.charAt(i) === 'a') {
inputArray.push('.-');
if (input.charAt(i + 1) != ' ') {
inputArray.push('/');
}
}
else if(input.charAt(i) === 'b') {
inputArray.push('-...');
if (input.charAt(i + 1) != ' ') {
inputArray.push('/');
}
}
else if(input.charAt(i) === 'c') {
inputArray.push('-.-.');
if (input.charAt(i + 1) != ' ') {
inputArray.push('/');
}
}
else if(input.charAt(i) === 'd') {
inputArray.push('-..');
if (input.charAt(i + 1) != ' ') {
inputArray.push('/');
}
}
else if(input.charAt(i) === 'e') {
inputArray.push('.');
if (input.charAt(i + 1) != ' ') {
inputArray.push('/');
}
}
else if(input.charAt(i) === 'f') {
inputArray.push('..-.');
if (input.charAt(i + 1) != ' ') {
inputArray.push('/');
}
}
else if(input.charAt(i) === 'g') {
inputArray.push('--.');
if (input.charAt(i + 1) != ' ') {
inputArray.push('/');
}
}
else if(input.charAt(i) === 'h') {
inputArray.push('....');
if (input.charAt(i + 1) != ' ') {
inputArray.push('/');
}
}
else if(input.charAt(i) === 'i') {
inputArray.push('..');
if (input.charAt(i + 1) != ' ') {
inputArray.push('/');
}
}
else if(input.charAt(i) === 'j') {
inputArray.push('.---');
if (input.charAt(i + 1) != ' ') {
inputArray.push('/');
}
}
else if(input.charAt(i) === 'k') {
inputArray.push('-.-');
if (input.charAt(i + 1) != ' ') {
inputArray.push('/');
}
}
else if(input.charAt(i) === 'l') {
inputArray.push('.-..');
if (input.charAt(i + 1) != ' ') {
inputArray.push('/');
}
}
else if(input.charAt(i) === 'm') {
inputArray.push('--');
if (input.charAt(i + 1) != ' ') {
inputArray.push('/');
}
}
else if(input.charAt(i) === 'n') {
inputArray.push('-.');
if (input.charAt(i + 1) != ' ') {
inputArray.push('/');
}
}
else if(input.charAt(i) === 'o') {
inputArray.push('---');
if (input.charAt(i + 1) != ' ') {
inputArray.push('/');
}
}
else if(input.charAt(i) === 'p') {
inputArray.push('.--.');
if (input.charAt(i + 1) != ' ') {
inputArray.push('/');
}
}
else if(input.charAt(i) === 'q') {
inputArray.push('--.-');
if (input.charAt(i + 1) != ' ') {
inputArray.push('/');
}
}
else if(input.charAt(i) === 'r') {
inputArray.push('.-.');
if (input.charAt(i + 1) != ' ') {
inputArray.push('/');
}
}
else if(input.charAt(i) === 's') {
inputArray.push('...');
if (input.charAt(i + 1) != ' ') {
inputArray.push('/');
}
}
else if(input.charAt(i) === 't') {
inputArray.push('-');
if (input.charAt(i + 1) != ' ') {
inputArray.push('/');
}
}
else if(input.charAt(i) === 'u') {
inputArray.push('..-');
if (input.charAt(i + 1) != ' ') {
inputArray.push('/');
}
}
else if(input.charAt(i) === 'v') {
inputArray.push('...-');
if (input.charAt(i + 1) != ' ') {
inputArray.push('/');
}
}
else if(input.charAt(i) === 'w') {
inputArray.push('.--');
if (input.charAt(i + 1) != ' ') {
inputArray.push('/');
}
}
else if(input.charAt(i) === 'x') {
inputArray.push('-..-');
if (input.charAt(i + 1) != ' ') {
inputArray.push('/');
}
}
else if(input.charAt(i) === 'y') {
inputArray.push('-.--');
if (input.charAt(i + 1) != ' ') {
inputArray.push('/');
}
}
else if(input.charAt(i) === 'z') {
inputArray.push('--..');
if (input.charAt(i + 1) != ' ') {
inputArray.push('/');
}
}
else if(input.charAt(i) === '0') {
inputArray.push('-----');
if (input.charAt(i + 1) != ' ') {
inputArray.push('/');
}
}
else if(input.charAt(i) === '1') {
inputArray.push('.----');
if (input.charAt(i + 1) != ' ') {
inputArray.push('/');
}
}
else if(input.charAt(i) === '2') {
inputArray.push('..---');
if (input.charAt(i + 1) != ' ') {
inputArray.push('/');
}
}
else if(input.charAt(i) === '3') {
inputArray.push('...--');
if (input.charAt(i + 1) != ' ') {
inputArray.push('/');
}
}
else if(input.charAt(i) === '4') {
inputArray.push('....-');
if (input.charAt(i + 1) != ' ') {
inputArray.push('/');
}
}
else if(input.charAt(i) === '5') {
inputArray.push('.....');
if (input.charAt(i + 1) != ' ') {
inputArray.push('/');
}
}
else if(input.charAt(i) === '6') {
inputArray.push('-....');
if (input.charAt(i + 1) != ' ') {
inputArray.push('/');
}
}
else if(input.charAt(i) === '7') {
inputArray.push('--...');
if (input.charAt(i + 1) != ' ') {
inputArray.push('/');
}
}
else if(input.charAt(i) === '8') {
inputArray.push('---..');
if (input.charAt(i + 1) != ' ') {
inputArray.push('/');
}
}
else if(input.charAt(i) === '9') {
inputArray.push('----.');
if (input.charAt(i + 1) != ' ') {
inputArray.push('/');
}
}
else if(input.charAt(i) === '.') {
inputArray.push('.-.-.-');
if (input.charAt(i + 1) != ' ') {
inputArray.push('/');
}
}
else if(input.charAt(i) === '?') {
inputArray.push('..--..');
if (input.charAt(i + 1) != ' ') {
inputArray.push('/');
}
}
else if(input.charAt(i) === '!') {
inputArray.push('-.-.--');
if (input.charAt(i + 1) != ' ') {
inputArray.push('/');
}
}
else if(input.charAt(i) === ('(')) {
inputArray.push('-.--.');
if (input.charAt(i + 1) != ' ') {
inputArray.push('/');
}
}
else if(input.charAt(i) === (')')) {
inputArray.push('-.--.-');
if (input.charAt(i + 1) != ' ') {
inputArray.push('/');
}
}
else if(input.charAt(i) === ':') {
inputArray.push('---...');
if (input.charAt(i + 1) != ' ') {
inputArray.push('/');
}
}
else if(input.charAt(i) === '=') {
inputArray.push('-...-');
if (input.charAt(i + 1) != ' ') {
inputArray.push('/');
}
}
else if(input.charAt(i) === '-') {
inputArray.push('-....-');
if (input.charAt(i + 1) != ' ') {
inputArray.push('/');
}
}
else if(input.charAt(i) === '"') {
inputArray.push('.-..-.');
if (input.charAt(i + 1) != ' ') {
inputArray.push('/');
}
}
else if(input.charAt(i) === ',') {
inputArray.push('--..--');
if (input.charAt(i + 1) != ' ') {
inputArray.push('/');
}
}
else if(input.charAt(i) === "'") {
inputArray.push('.----.');
if (input.charAt(i + 1) != ' ') {
inputArray.push('/');
}
}
else if(input.charAt(i) === '/') {
inputArray.push('-..-.');
if (input.charAt(i + 1) != ' ') {
inputArray.push('/');
}
}
else if(input.charAt(i) === '&') {
inputArray.push('.-...');
if (input.charAt(i + 1) != ' ') {
inputArray.push('/');
}
}
else if(input.charAt(i) === ';') {
inputArray.push('-.-.-');
if (input.charAt(i + 1) != ' ') {
inputArray.push('/');
}
}
else if(input.charAt(i) === '_') {
inputArray.push('..--.-');
if (input.charAt(i + 1) != ' ') {
inputArray.push('/');
}
}
else if(input.charAt(i) === '@') {
inputArray.push('.--.-.');
if (input.charAt(i + 1) != ' ') {
inputArray.push('/');
}
}
else if(input.charAt(i) === ' ') {
inputArray.push('//');
}
else {
inputArray.push(input.charAt(i));
}
}
}
switch(startType) {
case 'normal':
Encode(input);
output = inputArray.join('');
break;
case 'morse':
Decode(input);
output = inputArray.join('');
break;
default:
output = 'Unrecognized language!';
break;
}
console.log('Input was: ' + input);
console.log('Output is: ' + output);
console.log('Start type was: ' + startType);
<script src="https://getfirebug.com/firebug-lite-debug.js"></script>
答案 0 :(得分:2)
由于('a'||'b'||'c'||'d'||'e'||'f'||'g'||'h'||'i'||'j'||'k'||'l'||'m'||'n'||'o'||'p'||'q'||'r'||'s'||'t'||'u'||'v'||'w'||'x'||'y'||'z')
将始终返回a
,因此如果您的字符串中包含a
,那么它将被视为normal
类型。
如果您只是想检查input
是否只有字母[a-z
]字符,那么您可以使用
function checkInput(input) {
startType = /^[a-z]+$/.test(input) ? 'normal' : 'morse';
console.log(startType)
}
答案 1 :(得分:-1)
您是否尝试删除围绕角色选择的括号?
if (input.charAt(i) === 'a'||'b'||'c'||'d'||'e'||'f'||'g'||'h'||'i'||'j'||'k'||'l'||'m'||'n'||'o'||'p'||'q'||'r'||'s'||'t'||'u'||'v'||'w'||'x'||'y'||'z')
请改用:
if (['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'].indexOf(input.charAt(i)) > -1)
很抱歉误导你!