讓我們來解析查詢字串吧

2021-10-08 20:23:14 字數 2871 閱讀 7966

查詢字串,就是url位址裡?後面的那一串字串,如:,這個url裡的查詢字串就是not_checkout=1。現在我們有個任務,就是來解析查詢字串,就是把上面那個例子的引數變成物件的形式,如:

url物件是瀏覽器提供的物件,可以用其來解析 url,如:

// "?q=hello&name=leo"我們可以看到最後的url.search可以幫我們拿到查詢字串,但是對其作解析還是有點麻煩的,當然可以這樣子

let urlstr =

""let url =

newurl

(urlstr)

let strarr = url.search.

slice(1

).split

('&').

map(str =>

[ str.

split

('=')[

0], str.

split

('=')[

1]])

/* [['q', 'hello'], ['name', 'leo']]

*/let strobj =

strarr.

foreach

(arr =>)/*

*/

其實還有其他方法,在url例項化出的物件裡,其實有searchparams這個屬性,這個屬性所指向的物件具有各種方法來控制查詢字串,如

delete(name)—— 按照 name 移除引數,

get(name)—— 按照 name 獲取引數,

getall(name)—— 獲取相同 name 的所有引數(這是可行的,例如 ?name=leo&name=lucy),

has(name)—— 按照 name 檢查引數是否存在,

set(name, value)—— set/replace 引數

所以我們可以直接用這個來獲取了

let urlstr =

""let url =

newurl

(urlstr)

console.

log(url.searchparams.

get(q)

)// hello

console.

log(url.searchparams.

get(name)

)// leo

當然這個東西還是個可迭代物件,這意味著,它可以被for of利用

let urlstr =

""let url =

newurl

(urlstr)

for(

let[key, value]

of url.searchparams)

// q hello

// name leo

此外還可以用foreach方法來迭代

let urlstr =

""let url =

newurl

(urlstr)

url.searchparams.

foreach

((v,k)

=>

)//注意這裡的引數的key和value的順序

// q hello

// name leo

其實查詢字串在傳送的時候,是會對其中一些特殊字元進行編碼的,比如中文,空格,感嘆號等等,如下

這是由 rfc3986 標準 規定的

你好嗎

會變成%e4%bd%a0%e5%a5%bd%e5%90%97

這個有個函式encodeuri可以幫我們來編碼

encodeuri

('你好嗎')/*

%e4%bd%a0%e5%a5%bd%e5%90%97

*/

也可以用decodeuri來解碼

decodeuri

("%e4%bd%a0%e5%a5%bd%e5%90%97")/*

你好嗎*/

其實除了encodeuri之外,還有乙個是encodeuricomponent,其區別就是encodeuri的引數最好是整個url鏈結,因為它只關心?後面的東西,而encodeuricomponent的引數最好就是只傳?後面的東西,因為它會對傳進來的字串全部都編碼

查詢字串

在乙個主串中查詢相應的子串,如 abcdwoshidef 中查詢 woshi 方法 該實現的方法是最簡單的模式匹配方法,時間複雜度較高 include iostream using namespace std int searchstring const char str1,const char s...

查詢字串

qstring startwith 判斷乙個字串是否以某個字串開頭,引數 字串,大小寫敏感 qstring str welcome to you str.startswith welcome qt casesensitive 返回true str.startswith you qt casesens...

查詢字串

本身不難,寫到這裡只是乙個備忘錄的作用。假定linux系統中有乙個目錄,其中遞迴的存在若干子目錄。現在需要在這些目錄的檔案中尋找乙個字串marvel。我看到的方法是 find type f exec grep marvel 可是死活就是錯誤 find missing argument to exec...