2017-01-12 4 views
1

Представлено ранее об этом, на этом этапе все части работают отдельно, но не вместе. Я пробовал перемещать вещи, чтобы убедиться, что это просто проблема с порядком, но это не исправить. Попытка положить их в один большой, если и еще, похоже, не сработала. Я могу либо заставить строку отображать только символы буквенно-цифровых символов, либо отображать «не строку», но я не могу заставить код работать для обоих. Этот раздел будет возвращать только соответствующие буквенно-цифровые: «! Не строку»Возвращение Alphanumerics -использование с объединением частей функции

function nothingSpecial(str) { 
    var re = /[A-Z\s0-9]/i; 
    var newStr = ''; 

    for(var i=0; i<str.length; i++){ 
    if (re.test(str[i])){ 
     newStr = newStr + str[i]; 
    } 
    } 
    return newStr; 
    if(str.length <= 0) { 
    return ("Not a string!"); 
    } 

     if (typeof str !== String) { 
     return "Not a string!"} 

    } 

nothingSpecial("[email protected]#$#") 

Это вернет, даже если он должен показать буквы, цифры, но это правильно или, казалось бы, так что для чисел и «»

function nothingSpecial(str) { 

    var re = /[A-Z\s0-9]/i; 
    var newStr = ''; 

    if(str.length <= 0) { 
    return ("Not a string!"); 
    } 

    if (typeof str !== String) { 
    return "Not a string!"} 

    for(var i=0; i<str.length; i++){ 
    if (re.test(str[i])){ 
     newStr = newStr + str[i]; 
    } 
    } 
    return newStr; 

    } 
nothingSpecial(23) 

Что я делаю неправильно? -Заранее спасибо!

+0

Первый фрагмент имеет возврат в середине функции, остальные строки не будут выполнены – edc65

+0

Что вы пытаясь сделать? Даже если вы представили ранее, как мы можем это знать? – edc65

+0

Ваш второй фрагмент правильно возвращает «не строку», поскольку вы вызываете функцию с помощью аргумента number (23). Число не является строкой. – edc65

ответ

1

Edit: Хорошо, основанный на ваш комментарий, здесь вы идете:

Это ваша проблема:

if (typeof str !== String) 

Вы сравнивая результат typeof str, который является строкой, с object constructor для строк, String, который является функцией. Это не так, потому что вы на самом деле не проверяете строку, вы сравниваете строку (вывод typeof, которая всегда является строкой, независимо от типа, который вы проверяете) с помощью функции. Ваше сравнение должно вместо этого выглядеть следующим образом:

if (typeof str !== 'string') 

Edit: Heres в JSFiddle.

+0

Мои аплохи! Он должен возвращать «не строку», когда числа (или ничего не передается в строке) - это не должно скрывать числа в строке. – Megan

+0

Я рассмотрел две сделанные вами ошибки, исправление для второго решило бы это для вас. Я отредактировал свой ответ, чтобы удалить ссылку на первую. – chrBrd

0

Для того, чтобы какой-либо аргумент, преобразование в строку и сохранить только буквенно-цифровые символы:

function nothingSpecial(str) { 

    str += '' // convert any argument to string 

    str = str.replace(/[^A-Z\s0-9]/gi, "") // remove all characters except alphanumeric and any kind of space (newlines too) 

    return str 
} 
+0

Спасибо! Я уже писал об одном блоке кода, и это было рекомендовано. Я надеялся попробовать использовать циклы для практики, иначе да, это полностью путь! – Megan

Смежные вопросы