我有一个休息调用,它从查询参数中提供信息,我需要确定它们是字符串还是int,数组,布尔值。
例如,如果我有:
/.../ something?id = 1
我会收到' 1'但我知道整数。
此外,我有:
/.../ something?id = [1,2,3]
我会收到' [1,2,3]'但我知道它是数组。最后,如果我有:
/.../ something?id = string
我会收到' string'我应该将它用作常规的字符串。
正则表达式是对每种类型进行检查的唯一方法吗?
答案 0 :(得分:2)
您可以将JSON.parse
与catch块一起使用。
var options = ['12', '[1,2,3]', 'string', 'false', '{"x" : 2}', '/hey/', /hey/];
var parsed = options.map(x => {
try {
return JSON.parse(x)
} catch(e) {
return x;
}
});
var types = parsed.map(x => /\[object (.*)\]$/.exec(Object.prototype.toString.call(x))[1])
console.log(types);
答案 1 :(得分:1)
获得value
var value = "1"; //or whatever value after `id=`
你可以应用这个逻辑
var type = "";
var isNum = ( s ) => !isNaN(s);
var isObject = ( s ) => {
try { s = JSON.parse(s); return Array.isArray(s) ? "array" : "object" } catch( e ){ return false }
};
现在将它们用作
type = isNum( value ) ? "number" : ( isObject( s ) || "string" );
注意强>
value
是函数定义,它仍将返回string
答案 2 :(得分:0)
解决此问题的一种方法是使用反复试验方法:
[
开始到以]
结尾,您可能会认为它是一个数组。请使用JSON.parse
来确定。/^\d+$/
根据整数值测试字符串。请使用parseInt()
来确定。答案 3 :(得分:0)
Savio的,
你可以处理它的一种方法是获取值并使用' typeof'看看它们是什么。
import numpy as np
import matplotlib.pyplot as plt
from scipy.io import loadmat
from PIL import Image
import scipy.misc as smp
from random import random
from math import exp
image = Image.open('jama.png').convert('L')
#image.show()
arrimag = np.array(image)
#print(arrimag.shape)
#print(arrimag)
row_windowsize = 8
column_windowsize = 8
imagelen = len(arrimag)
f = np.array([])
for row in range(0, imagelen, row_windowsize):
for column in range(0, imagelen, column_windowsize):
win = arrimag[row:row+row_windowsize,
column:column+column_windowsize]
window1 = np.zeros((64,1))
window1 = win.ravel()
window1 = window1.reshape(64,1)
f = np.append(f,window1)
window = f.reshape((1024,64))
#print(window)