Return 字母数字 - 合并函数片段的问题
Return Alphanumerics -issue with combining pieces of the function
早先提交过这个,此时所有的部分都是分开工作的,而不是一起工作的。我试过四处移动,看看是否只是订单问题,但这并没有解决问题。试图将它们放在一个大 if/else 中似乎也没有用。我可以让字符串仅显示字母数字字符或显示 'not a string',但我无法让代码同时执行这两项操作。
本节将 return 仅显示正确的字母数字:
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("asdfalsd@#$#")
这将 return "not a string!",即使它应该显示字母数字,但对于数字和“”[=13= 是正确的或看似如此]
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)
我做错了什么? -先感谢您!
编辑:好的,根据您的评论,开始吧:
这是你的问题:
if (typeof str !== String)
您正在比较 typeof str
的结果,它是一个字符串,object constructor 是字符串 String
,它是一个函数。它失败了,因为您实际上并没有检查字符串,而是在将字符串(typeof
的输出,无论您检查的类型如何,它始终是一个字符串)与一个函数进行比较。您的比较应如下所示:
if (typeof str !== 'string')
编辑:这是 JSFiddle。
要接受任何类型的参数,转换为字符串并仅保留字母数字字符:
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
}
早先提交过这个,此时所有的部分都是分开工作的,而不是一起工作的。我试过四处移动,看看是否只是订单问题,但这并没有解决问题。试图将它们放在一个大 if/else 中似乎也没有用。我可以让字符串仅显示字母数字字符或显示 'not a string',但我无法让代码同时执行这两项操作。 本节将 return 仅显示正确的字母数字:
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("asdfalsd@#$#")
这将 return "not a string!",即使它应该显示字母数字,但对于数字和“”[=13= 是正确的或看似如此]
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)
我做错了什么? -先感谢您!
编辑:好的,根据您的评论,开始吧:
这是你的问题:
if (typeof str !== String)
您正在比较 typeof str
的结果,它是一个字符串,object constructor 是字符串 String
,它是一个函数。它失败了,因为您实际上并没有检查字符串,而是在将字符串(typeof
的输出,无论您检查的类型如何,它始终是一个字符串)与一个函数进行比较。您的比较应如下所示:
if (typeof str !== 'string')
编辑:这是 JSFiddle。
要接受任何类型的参数,转换为字符串并仅保留字母数字字符:
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
}