• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# @ohos.url (URL字符串解析)
2
3URL代表着是统一资源定位符,本模块提供了常用的工具函数,实现了处理URL字符串[URLParams](#urlparams9)和构造[URL](#url)对象等功能。
4
5> **说明:**
6>
7> 本模块首批接口从API version 7开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
8
9## 导入模块
10
11```ts
12import Url from '@ohos.url'
13```
14## URLParams<sup>9+</sup>
15
16URLParams接口定义了一些处理URL查询字符串的实用方法。
17
18### constructor<sup>9+</sup>
19
20constructor(init?: string[][] | Record&lt;string, string&gt; | string | URLParams)
21
22URLParams的构造函数。
23
24**系统能力:** SystemCapability.Utils.Lang
25
26**参数:**
27
28| 参数名 | 类型 | 必填 | 说明 |
29| -------- | -------- | -------- | -------- |
30| init | string[][] \| Record&lt;string, string&gt; \| string \| URLParams | 否 | 入参对象。<br/>- string[][]:字符串二维数组<br/>- Record&lt;string, string&gt;:对象列表<br/>- string:字符串<br/>- URLParams:对象<br/>- 默认值:null。 |
31
32**示例:**
33
34```ts
35// 通过string[][]方式构造URLParams对象:
36let objectParams = new Url.URLParams([ ['user1', 'abc1'], ['query2', 'first2'], ['query3', 'second3'] ]);
37// 通过Record<string, string>方式构造URLParams对象:
38let objectParams1 = new Url.URLParams({"fod" : '1' , "bard" : '2'});
39// 通过string方式构造URLParams对象:
40let objectParams2 = new Url.URLParams('?fod=1&bard=2');
41// 通过Url对象的search属性构造URLParams对象:
42let urlObject = Url.URL.parseURL('https://developer.mozilla.org/?fod=1&bard=2');
43let objectParams3 = new Url.URLParams(urlObject.search);
44// 通过Url对象的params属性获取URLParams对象:
45let urlObject1 = Url.URL.parseURL('https://developer.mozilla.org/?fod=1&bard=2');
46let objectParams4 = urlObject1.params;
47```
48
49
50### append<sup>9+</sup>
51
52append(name: string, value: string): void
53
54将新的键值对插入到查询字符串。
55
56**系统能力:** SystemCapability.Utils.Lang
57
58**参数:**
59
60| 参数名 | 类型 | 必填 | 说明 |
61| -------- | -------- | -------- | -------- |
62| name | string | 是 | 需要插入搜索参数的键名。 |
63| value | string | 是 | 需要插入搜索参数的值。 |
64
65**示例:**
66
67```ts
68let urlObject = Url.URL.parseURL('https://developer.exampleUrl/?fod=1&bard=2');
69let paramsObject = new Url.URLParams(urlObject.search.slice(1));
70paramsObject.append('fod', '3');
71```
72
73
74### delete<sup>9+</sup>
75
76delete(name: string): void
77
78删除指定名称的键值对。
79
80**系统能力:** SystemCapability.Utils.Lang
81
82**参数:**
83
84| 参数名 | 类型 | 必填 | 说明 |
85| -------- | -------- | -------- | -------- |
86| name | string | 是 | 需要删除的键值名称。 |
87
88**示例:**
89
90```ts
91let urlObject = Url.URL.parseURL('https://developer.exampleUrl/?fod=1&bard=2');
92let paramsObject = new Url.URLParams(urlObject.search.slice(1));
93paramsObject.delete('fod');
94```
95
96
97### getAll<sup>9+</sup>
98
99getAll(name: string): string[]
100
101获取指定名称的所有键对应值的集合。
102
103**系统能力:** SystemCapability.Utils.Lang
104
105**参数:**
106
107| 参数名 | 类型 | 必填 | 说明 |
108| -------- | -------- | -------- | -------- |
109| name | string | 是 | 指定的键值名称。 |
110
111**返回值:**
112
113| 类型 | 说明 |
114| -------- | -------- |
115| string[] | 返回指定名称的所有键对应值的集合。 |
116
117**示例:**
118
119```ts
120let urlObject = Url.URL.parseURL('https://developer.exampleUrl/?fod=1&bard=2');
121let params = new Url.URLParams(urlObject.search.slice(1));
122params.append('fod', '3'); // Add a second value for the fod parameter.
123console.log(params.getAll('fod').toString()) // Output ["1","3"].
124```
125
126
127### entries<sup>9+</sup>
128
129entries(): IterableIterator<[string, string]>
130
131返回一个ES6的迭代器,迭代器的每一项都是一个 JavaScript Array。Array的第一项是name,Array的第二项是value。
132
133**系统能力:** SystemCapability.Utils.Lang
134
135**返回值:**
136
137| 类型 | 说明 |
138| -------- | -------- |
139| IterableIterator&lt;[string, string]&gt; | 返回一个ES6的迭代器。 |
140
141**示例:**
142
143```ts
144let searchParamsObject = new Url.URLParams("keyName1=valueName1&keyName2=valueName2");
145let pair:Iterable<Object[]> = searchParamsObject.entries();
146let arrayValue = Array.from(pair);
147for (let pair of arrayValue) { // Show keyName/valueName pairs
148  console.log(pair[0]+ ', '+ pair[1]);
149}
150```
151
152
153### forEach<sup>9+</sup>
154
155forEach(callbackFn: (value: string, key: string, searchParams: URLParams) => void, thisArg?: Object): void
156
157通过回调函数来遍历URLSearchParams实例对象上的键值对。
158
159**系统能力:** SystemCapability.Utils.Lang
160
161**参数:**
162
163| 参数名 | 类型 | 必填 | 说明 |
164| -------- | -------- | -------- | -------- |
165| callbackFn | function | 是 | 回调函数。 |
166| thisArg | Object | 否 | callbackFn被调用时用作this值,默认值是本对象。 |
167
168**表1** callbackFn的参数说明
169
170| 参数名 | 类型 | 必填 | 说明 |
171| -------- | -------- | -------- | -------- |
172| value | string | 是 | 当前遍历到的键值。 |
173| key | string | 是 | 当前遍历到的键名。 |
174| searchParams | [URLParams](#urlparams9) | 是 | 当前调用forEach方法的实例对象。 |
175
176**示例:**
177
178```ts
179const myURLObject = Url.URL.parseURL('https://developer.exampleUrl/?fod=1&bard=2');
180myURLObject.params.forEach((value, name, searchParams) => {
181    console.log(name, value, myURLObject.params === searchParams);
182});
183```
184
185
186### get<sup>9+</sup>
187
188get(name: string): string | null
189
190获取指定名称对应的第一个值。
191
192**系统能力:** SystemCapability.Utils.Lang
193
194**参数:**
195
196| 参数名 | 类型 | 必填 | 说明 |
197| -------- | -------- | -------- | -------- |
198| name | string | 是 | 指定键值对的名称。 |
199
200**返回值:**
201
202| 类型 | 说明 |
203| -------- | -------- |
204| string | 返回第一个值。 |
205| null | 如果没找到,返回 null。 |
206
207**示例:**
208
209```ts
210let paramsObject = new Url.URLParams('name=Jonathan&age=18');
211let name = paramsObject.get("name"); // is the string "Jonathan"
212let age = paramsObject.get("age"); // is the string "18"
213```
214
215
216### has<sup>9+</sup>
217
218has(name: string): boolean
219
220判断一个指定的键名对应的值是否存在。
221
222**系统能力:** SystemCapability.Utils.Lang
223
224**参数:**
225
226| 参数名 | 类型 | 必填 | 说明 |
227| -------- | -------- | -------- | -------- |
228| name | string | 是 | 要查找的参数的键名。 |
229
230**返回值:**
231
232| 类型 | 说明 |
233| -------- | -------- |
234| boolean | 是否存在相对应的key值,存在返回true,否则返回false。 |
235
236**示例:**
237
238```ts
239let urlObject = Url.URL.parseURL('https://developer.exampleUrl/?fod=1&bard=2');
240let paramsObject = new Url.URLParams(urlObject.search.slice(1));
241let result = paramsObject.has('bard');
242```
243
244
245### set<sup>9+</sup>
246
247set(name: string, value: string): void
248
249将与name关联的URLSearchParams对象中的值设置为value。如果存在名称为name的键值对,请将第一个键值对的值设置为value并删除所有其他值。如果不是,则将键值对附加到查询字符串。
250
251**系统能力:** SystemCapability.Utils.Lang
252
253**参数:**
254
255| 参数名 | 类型 | 必填 | 说明 |
256| -------- | -------- | -------- | -------- |
257| name | string | 是 | 将要设置的参数的键值名。 |
258| value | string | 是 | 所要设置的参数值。 |
259
260**示例:**
261
262```ts
263let urlObject = Url.URL.parseURL('https://developer.exampleUrl/?fod=1&bard=2');
264let paramsObject = new Url.URLParams(urlObject.search.slice(1));
265paramsObject.set('baz', '3'); // Add a third parameter.
266```
267
268
269### sort<sup>9+</sup>
270
271sort(): void
272
273对包含在此对象中的所有键值对进行排序,并返回undefined。排序顺序是根据键的Unicode代码点。该方法使用稳定的排序算法 (即,将保留具有相等键的键值对之间的相对顺序)。
274
275**系统能力:** SystemCapability.Utils.Lang
276
277**示例:**
278
279```ts
280let searchParamsObject = new Url.URLParams("c=3&a=9&b=4&d=2"); // Create a test URLSearchParams object
281searchParamsObject.sort(); // Sort the key/value pairs
282console.log(searchParamsObject.toString()); // Display the sorted query string // Output a=9&b=4&c=3&d=2
283```
284
285
286### keys<sup>9+</sup>
287
288keys(): IterableIterator&lt;string&gt;
289
290返回一个所有键值对的name的ES6迭代器。
291
292**系统能力:** SystemCapability.Utils.Lang
293
294**返回值:**
295
296| 类型 | 说明 |
297| -------- | -------- |
298| IterableIterator&lt;string&gt; | 返回一个所有键值对的name的ES6迭代器。 |
299
300**示例:**
301
302```ts
303let searchParamsObject = new Url.URLParams("key1=value1&key2=value2"); // Create a URLSearchParamsObject object for testing
304let keys = Array.from(searchParamsObject.keys());
305for (let key of keys) { // Output key-value pairs
306  console.log(key);
307}
308```
309
310
311### values<sup>9+</sup>
312
313values(): IterableIterator&lt;string&gt;
314
315返回一个所有键值对的value的ES6迭代器。
316
317**系统能力:** SystemCapability.Utils.Lang
318
319**返回值:**
320
321| 类型 | 说明 |
322| -------- | -------- |
323| IterableIterator&lt;string&gt; | 返回一个所有键值对的value的ES6迭代器。 |
324
325**示例:**
326
327```ts
328let searchParams = new Url.URLParams("key1=value1&key2=value2"); // Create a URLSearchParamsObject object for testing
329let values = Array.from(searchParams.values());
330for (let value of values) {
331  console.log(value);
332}
333```
334
335
336### [Symbol.iterator]<sup>9+</sup>
337
338[Symbol.iterator]\(): IterableIterator&lt;[string, string]&gt;
339
340返回一个ES6的迭代器,迭代器的每一项都是一个 JavaScript Array。Array的第一项是name,Array的第二项是value。
341
342**系统能力:** SystemCapability.Utils.Lang
343
344**返回值:**
345
346| 类型 | 说明 |
347| -------- | -------- |
348| IterableIterator&lt;[string, string]&gt; | 返回一个ES6的迭代器。 |
349
350**示例:**
351
352```ts
353const paramsObject = new Url.URLParams('fod=bay&edg=bap');
354let iter: Iterable<Object[]> = paramsObject[Symbol.iterator]();
355let pairs = Array.from(iter);
356for (let pair of pairs) {
357  console.log(pair[0] + ', ' + pair[1]);
358}
359```
360
361
362### tostring<sup>9+</sup>
363
364toString(): string
365
366返回序列化为字符串的搜索参数,必要时对字符进行百分比编码。
367
368**系统能力:** SystemCapability.Utils.Lang
369
370**返回值:**
371
372| 类型 | 说明 |
373| -------- | -------- |
374| string | 返回序列化为字符串的搜索参数,必要时对字符进行百分比编码。 |
375
376**示例:**
377
378```ts
379let url = Url.URL.parseURL('https://developer.exampleUrl/?fod=1&bard=2');
380let params = new Url.URLParams(url.search.slice(1));
381params.append('fod', '3');
382console.log(params.toString());
383```
384
385## URL
386
387用于解析、构造、规范、编码对应的URL字符串。
388
389### 属性
390
391**系统能力:** SystemCapability.Utils.Lang
392
393| 名称 | 类型 | 可读 | 可写 | 说明 |
394| -------- | -------- | -------- | -------- | -------- |
395| hash | string | 是 | 是 | 获取和设置URL的片段部分。 |
396| host | string | 是 | 是 | 获取和设置URL的主机部分。 |
397| hostname | string | 是 | 是 | 获取和设置URL的主机名部分,不带端口。 |
398| href | string | 是 | 是 | 获取和设置序列化的URL。 |
399| origin | string | 是 | 否 | 获取URL源的只读序列化。 |
400| password | string | 是 | 是 | 获取和设置URL的密码部分。 |
401| pathname | string | 是 | 是 | 获取和设置URL的路径部分。 |
402| port | string | 是 | 是 | 获取和设置URL的端口部分。 |
403| protocol | string | 是 | 是 | 获取和设置URL的协议部分。 |
404| search | string | 是 | 是 | 获取和设置URL的序列化查询部分。 |
405| searchParams<sup>(deprecated)</sup> | [URLSearchParams](#urlsearchparamsdeprecated) | 是 | 否 | 获取URLSearchParams表示URL查询参数的对象。<br/>- **说明:** 此属性从API version 7开始支持,从API version 9开始被废弃。建议使用params<sup>9+</sup>替代。 |
406| params<sup>9+</sup> | [URLParams](#urlparams9) | 是 | 否 | 获取URLParams表示URL查询参数的对象。 |
407| username | string | 是 | 是 | 获取和设置URL的用户名部分。 |
408
409**示例:**
410
411```ts
412let that = url.URL.parseURL('http://username:password@host:8080/directory/file?foo=1&bar=2#fragment');
413console.log("hash " + that.hash) // hash #fragment
414console.log("host " + that.host) // host host:8080
415console.log("hostname " + that.hostname) // hostname host
416console.log("href " + that.href) // href http://username:password@host:8080/directory/file?foo=1&bar=2#fragment
417console.log("origin " + that.origin) // origin http://host:8080
418console.log("password " + that.password) // password password
419console.log("pathname " + that.pathname) // pathname /directory/file
420console.log("port " + that.port) // port 8080
421console.log("protocol " + that.protocol) // protocol http:
422console.log("search " + that.search) // search ?foo=1&bar=2
423console.log("username " + that.username) // username username
424// that.params 返回值为URLParams对象
425console.log("params: foo " + that.params.get("foo")) // params: foo 1
426```
427
428### constructor<sup>(deprecated)</sup>
429
430> **说明:**
431>
432> 从API version 7开始支持,从API version 9开始废弃,建议使用[parseURL<sup>9+</sup>](#parseurl9)替代。
433
434constructor(url: string, base?: string | URL)
435
436URL的构造函数。
437
438**系统能力:** SystemCapability.Utils.Lang
439
440**参数:**
441
442| 参数名 | 类型 | 必填 | 说明 |
443| -------- | -------- | -------- | -------- |
444| url | string | 是 | 入参对象。 |
445| base | string \| URL | 否 | 入参字符串或者对象。<br/>- string:字符串<br/>- URL:字符串或对象<br/>- 默认值是空字符串或空对象。 |
446
447**示例:**
448
449```ts
450let mm = 'https://username:password@host:8080';
451let a = new Url.URL("/", mm); // Output 'https://username:password@host:8080/';
452let b = new Url.URL(mm); // Output 'https://username:password@host:8080/';
453new Url.URL('path/path1', b); // Output 'https://username:password@host:8080/path/path1';
454let c = new Url.URL('/path/path1', b);  // Output 'https://username:password@host:8080/path/path1';
455new Url.URL('/path/path1', c); // Output 'https://username:password@host:8080/path/path1';
456new Url.URL('/path/path1', a); // Output 'https://username:password@host:8080/path/path1';
457new Url.URL('/path/path1', "https://www.exampleUrl/fr-FR/toto"); // Output https://www.exampleUrl/path/path1
458new Url.URL('/path/path1', ''); // Raises a TypeError exception as '' is not a valid URL
459new Url.URL('/path/path1'); // Raises a TypeError exception as '/path/path1' is not a valid URL
460new Url.URL('https://www.example.com', ); // Output https://www.example.com/
461new Url.URL('https://www.example.com', b); // Output https://www.example.com/
462```
463
464### constructor<sup>9+</sup>
465
466constructor()
467
468URL的无参构造函数。parseURL调用后返回一个URL对象,不单独使用。
469
470**系统能力:** SystemCapability.Utils.Lang
471
472### parseURL<sup>9+</sup>
473
474static parseURL(url: string, base?: string | URL): URL
475
476URL静态成员函数。
477
478**系统能力:** SystemCapability.Utils.Lang
479
480**参数:**
481
482| 参数名 | 类型 | 必填 | 说明 |
483| -------- | -------- | -------- | -------- |
484| url | string | 是 | 入参对象。 |
485| base | string \| URL | 否 | 入参字符串或者对象。<br/>- string:字符串<br/>- URL:字符串或对象<br/>- 默认值是空字符串或空对象。 |
486
487**错误码:**
488
489以下错误码的详细介绍请参见[语言基础类库错误码](../errorcodes/errorcode-utils.md)。
490
491| 错误码ID | 错误信息 |
492| -------- | -------- |
493| 10200002 | Invalid url string. |
494
495
496**示例:**
497
498```ts
499let mm = 'https://username:password@host:8080';
500let url = Url.URL.parseURL(mm);
501let result = url.toString(); // Output 'https://username:password@host:8080/'
502```
503
504### tostring
505
506toString(): string
507
508将解析过后的URL转化为字符串。
509
510**系统能力:** SystemCapability.Utils.Lang
511
512**返回值:**
513
514| 类型 | 说明 |
515| -------- | -------- |
516| string | 用于返回网址的字符串序列化。 |
517
518**示例:**
519
520```ts
521const url = Url.URL.parseURL('https://username:password@host:8080/directory/file?query=pppppp#qwer=da');
522let result = url.toString();
523```
524
525### toJSON
526
527toJSON(): string
528
529将解析过后的URL转化为JSON字符串。
530
531**系统能力:** SystemCapability.Utils.Lang
532
533**返回值:**
534
535| 类型 | 说明 |
536| -------- | -------- |
537| string | 用于返回网址的字符串序列化。 |
538
539**示例:**
540```ts
541const url = Url.URL.parseURL('https://username:password@host:8080/directory/file?query=pppppp#qwer=da');
542let result = url.toJSON();
543```
544
545## URLSearchParams<sup>(deprecated)</sup>
546
547URLSearchParams接口定义了一些处理URL查询字符串的实用方法,从API version 9开始废弃,建议使用[URLParams](#urlparams9)。
548
549### constructor<sup>(deprecated)</sup>
550
551constructor(init?: string[][] | Record&lt;string, string&gt; | string | URLSearchParams)
552
553URLSearchParams的构造函数。
554
555> **说明:**
556>
557> 从API version 7开始支持,从API version 9开始废弃,建议使用[URLParams.constructor<sup>9+</sup>](#constructor9)替代。
558
559**系统能力:** SystemCapability.Utils.Lang
560
561**参数:**
562
563| 参数名 | 类型 | 必填 | 说明 |
564| -------- | -------- | -------- | -------- |
565| init | string[][] \| Record&lt;string, string&gt; \| string \| URLSearchParams | 否 | 入参对象。<br/>- string[][]:字符串二维数组<br/>- Record&lt;string, string&gt;:对象列表<br/>- string:字符串<br/>- URLSearchParams:对象<br/>- 默认值:null。 |
566
567**示例:**
568
569```ts
570let objectParams = new Url.URLSearchParams([ ['user1', 'abc1'], ['query2', 'first2'], ['query3', 'second3'] ]);
571let objectParams1 = new Url.URLSearchParams({"fod" : '1' , "bard" : '2'});
572let objectParams2 = new Url.URLSearchParams('?fod=1&bard=2');
573let urlObject = new Url.URL('https://developer.mozilla.org/?fod=1&bard=2');
574let params = new Url.URLSearchParams(urlObject.search);
575```
576
577### append<sup>(deprecated)</sup>
578
579append(name: string, value: string): void
580
581将新的键值对插入到查询字符串。
582
583> **说明:**
584>
585> 从API version 7开始支持,从API version 9开始废弃,建议使用[URLParams.append<sup>9+</sup>](#append9)替代。
586
587**系统能力:** SystemCapability.Utils.Lang
588
589**参数:**
590
591| 参数名 | 类型 | 必填 | 说明 |
592| -------- | -------- | -------- | -------- |
593| name | string | 是 | 需要插入搜索参数的键名。 |
594| value | string | 是 | 需要插入搜索参数的值。 |
595
596**示例:**
597
598```ts
599let urlObject = new Url.URL('https://developer.exampleUrl/?fod=1&bard=2');
600let paramsObject = new Url.URLSearchParams(urlObject.search.slice(1));
601paramsObject.append('fod', '3');
602```
603
604### delete<sup>(deprecated)</sup>
605
606delete(name: string): void
607
608删除指定名称的键值对。
609
610> **说明:**
611>
612> 从API version 7开始支持,从API version 9开始废弃,建议使用[URLParams.delete<sup>9+</sup>](#delete9)替代。
613
614**系统能力:** SystemCapability.Utils.Lang
615
616**参数:**
617
618| 参数名 | 类型 | 必填 | 说明 |
619| -------- | -------- | -------- | -------- |
620| name | string | 是 | 需要删除的键值名称。 |
621
622**示例:**
623
624```ts
625let urlObject = new Url.URL('https://developer.exampleUrl/?fod=1&bard=2');
626let paramsobject = new Url.URLSearchParams(urlObject.search.slice(1));
627paramsobject.delete('fod');
628```
629
630### getAll<sup>(deprecated)</sup>
631
632getAll(name: string): string[]
633
634获取指定名称的所有键值对。
635
636> **说明:**
637>
638> 从API version 7开始支持,从API version 9开始废弃,建议使用[URLParams.getAll<sup>9+</sup>](#getall9)替代。
639
640**系统能力:** SystemCapability.Utils.Lang
641
642**参数:**
643
644| 参数名 | 类型 | 必填 | 说明 |
645| -------- | -------- | -------- | -------- |
646| name | string | 是 | 指定的键值名称。 |
647
648**返回值:**
649
650| 类型 | 说明 |
651| -------- | -------- |
652| string[] | 返回指定名称的所有键值对。 |
653
654**示例:**
655
656```ts
657let urlObject = new Url.URL('https://developer.exampleUrl/?fod=1&bard=2');
658let params = new Url.URLSearchParams(urlObject.search.slice(1));
659params.append('fod', '3'); // Add a second value for the fod parameter.
660console.log(params.getAll('fod').toString()) // Output ["1","3"].
661```
662
663### entries<sup>(deprecated)</sup>
664
665entries(): IterableIterator<[string, string]>
666
667返回一个ES6的迭代器,迭代器的每一项都是一个 JavaScript Array。Array的第一项是name,Array的第二项是value。
668
669> **说明:**
670>
671> 从API version 7开始支持,从API version 9开始废弃,建议使用[URLParams.entries<sup>9+</sup>](#entries9)替代。
672
673**系统能力:** SystemCapability.Utils.Lang
674
675**返回值:**
676
677| 类型 | 说明 |
678| -------- | -------- |
679| IterableIterator&lt;[string, string]&gt; | 返回一个ES6的迭代器。 |
680
681**示例:**
682
683```ts
684let searchParamsObject = new Url.URLSearchParams("keyName1=valueName1&keyName2=valueName2");
685let iter: Iterable<Object[]> = searchParamsObject.entries();
686let pairs = Array.from(iter);
687for (let pair of pairs) { // Show keyName/valueName pairs
688  console.log(pair[0]+ ', '+ pair[1]);
689}
690```
691
692
693### forEach<sup>(deprecated)</sup>
694
695forEach(callbackFn: (value: string, key: string, searchParams: URLSearchParams) => void, thisArg?: Object): void
696
697通过回调函数来遍历URLSearchParams实例对象上的键值对。
698
699> **说明:**
700>
701> 从API version 7开始支持,从API version 9开始废弃,建议使用[URLParams.forEach<sup>9+</sup>](#foreach9)替代。
702
703**系统能力:** SystemCapability.Utils.Lang
704
705**参数:**
706
707| 参数名 | 类型 | 必填 | 说明 |
708| -------- | -------- | -------- | -------- |
709| callbackFn | function | 是 | 回调函数。 |
710| thisArg | Object | 否 | callbackFn被调用时用作this值,默认值是本对象。 |
711
712**表1** callbackFn的参数说明
713
714| 参数名 | 类型 | 必填 | 说明 |
715| -------- | -------- | -------- | -------- |
716| value | string | 是 | 当前遍历到的键值。 |
717| key | string | 是 | 当前遍历到的键名。 |
718| searchParams | [URLSearchParams](#urlsearchparamsdeprecated) | 是 | 当前调用forEach方法的实例对象。 |
719
720**示例:**
721
722```ts
723const myURLObject = new Url.URL('https://developer.exampleUrl/?fod=1&bard=2');
724myURLObject.searchParams.forEach((value, name, searchParams) => {
725    console.log(name, value, myURLObject.searchParams === searchParams);
726});
727```
728
729
730### get<sup>(deprecated)</sup>
731
732get(name: string): string | null
733
734获取指定名称对应的第一个值。
735
736> **说明:**
737>
738> 从API version 7开始支持,从API version 9开始废弃,建议使用[URLParams.get<sup>9+</sup>](#get9)替代。
739
740**系统能力:** SystemCapability.Utils.Lang
741
742**参数:**
743
744| 参数名 | 类型 | 必填 | 说明 |
745| -------- | -------- | -------- | -------- |
746| name | string | 是 | 指定键值对的名称。 |
747
748**返回值:**
749
750| 类型 | 说明 |
751| -------- | -------- |
752| string | 返回第一个值。 |
753| null | 如果没找到,返回 null。 |
754
755**示例:**
756
757```ts
758let paramsObject = new Url.URLSearchParams('name=Jonathan&age=18');
759let name = paramsObject.get("name"); // is the string "Jonathan"
760let age = paramsObject.get("age"); // is the string '18'
761```
762
763
764### has<sup>(deprecated)</sup>
765
766has(name: string): boolean
767
768判断一个指定的键名对应的值是否存在。
769
770> **说明:**
771>
772> 从API version 7开始支持,从API version 9开始废弃,建议使用[URLParams.has<sup>9+</sup>](#has9)替代。
773
774**系统能力:** SystemCapability.Utils.Lang
775
776**参数:**
777
778| 参数名 | 类型 | 必填 | 说明 |
779| -------- | -------- | -------- | -------- |
780| name | string | 是 | 要查找的参数的键名。 |
781
782**返回值:**
783
784| 类型 | 说明 |
785| -------- | -------- |
786| boolean | 是否存在相对应的key值,存在返回true,否则返回false。 |
787
788**示例:**
789
790```ts
791let urlObject = new Url.URL('https://developer.exampleUrl/?fod=1&bard=2');
792let paramsObject = new Url.URLSearchParams(urlObject.search.slice(1));
793paramsObject.has('bard') === true;
794```
795
796
797### set<sup>(deprecated)</sup>
798
799set(name: string, value: string): void
800
801将与name关联的URLSearchParams对象中的值设置为value。如果存在名称为name的键值对,请将第一个键值对的值设置为value并删除所有其他值。如果不是,则将键值对附加到查询字符串。
802
803> **说明:**
804>
805> 从API version 7开始支持,从API version 9开始废弃,建议使用[URLParams.set<sup>9+</sup>](#set9)替代。
806
807**系统能力:** SystemCapability.Utils.Lang
808
809**参数:**
810
811| 参数名 | 类型 | 必填 | 说明 |
812| -------- | -------- | -------- | -------- |
813| name | string | 是 | 将要设置的参数的键值名。 |
814| value | string | 是 | 所要设置的参数值。 |
815
816**示例:**
817
818```ts
819let urlObject = new Url.URL('https://developer.exampleUrl/?fod=1&bard=2');
820let paramsObject = new Url.URLSearchParams(urlObject.search.slice(1));
821paramsObject.set('baz', '3'); // Add a third parameter.
822```
823
824
825### sort<sup>(deprecated)</sup>
826
827sort(): void
828
829对包含在此对象中的所有键值对进行排序,并返回undefined。排序顺序是根据键的Unicode代码点。该方法使用稳定的排序算法 (即,将保留具有相等键的键值对之间的相对顺序)。
830
831> **说明:**
832>
833> 从API version 7开始支持,从API version 9开始废弃,建议使用[URLParams.sort<sup>9+</sup>](#sort9)替代。
834
835**系统能力:** SystemCapability.Utils.Lang
836
837**示例:**
838
839```ts
840let searchParamsObject = new Url.URLSearchParams("c=3&a=9&b=4&d=2"); // Create a test URLSearchParams object
841searchParamsObject.sort(); // Sort the key/value pairs
842console.log(searchParamsObject.toString()); // Display the sorted query string // Output a=9&b=4&c=3&d=2
843```
844
845
846### keys<sup>(deprecated)</sup>
847
848keys(): IterableIterator&lt;string&gt;
849
850返回一个所有键值对的name的ES6迭代器。
851
852> **说明:**
853>
854> 从API version 7开始支持,从API version 9开始废弃,建议使用[URLParams.keys<sup>9+</sup>](#keys9)替代。
855
856**系统能力:** SystemCapability.Utils.Lang
857
858**返回值:**
859
860| 类型 | 说明 |
861| -------- | -------- |
862| IterableIterator&lt;string&gt; | 返回一个所有键值对的name的ES6迭代器。 |
863
864**示例:**
865
866```ts
867let searchParamsObject = new Url.URLSearchParams("key1=value1&key2=value2"); // Create a URLSearchParamsObject object for testing
868let keys = Array.from(searchParamsObject.keys());
869for (let key of keys) { // Output key-value pairs
870  console.log(key);
871}
872```
873
874
875### values<sup>(deprecated)</sup>
876
877values(): IterableIterator&lt;string&gt;
878
879返回一个所有键值对的value的ES6迭代器。
880
881> **说明:**
882>
883> 从API version 7开始支持,从API version 9开始废弃,建议使用[URLParams.values<sup>9+</sup>](#values9)替代。
884
885**系统能力:** SystemCapability.Utils.Lang
886
887**返回值:**
888
889| 类型 | 说明 |
890| -------- | -------- |
891| IterableIterator&lt;string&gt; | 返回一个所有键值对的value的ES6迭代器。 |
892
893**示例:**
894
895```ts
896let searchParams = new Url.URLSearchParams("key1=value1&key2=value2"); // Create a URLSearchParamsObject object for testing
897let values = Array.from(searchParams.values());
898for (let value of values) {
899  console.log(value);
900}
901```
902
903
904### [Symbol.iterator]<sup>(deprecated)</sup>
905
906[Symbol.iterator]\(): IterableIterator&lt;[string, string]&gt;
907
908返回一个ES6的迭代器,迭代器的每一项都是一个 JavaScript Array。Array的第一项是name,Array的第二项是value。
909
910> **说明:**
911>
912> 从API version 7开始支持,从API version 9开始废弃,建议使用[URLParams.[Symbol.iterator]<sup>9+</sup>](#symboliterator9)替代。
913
914**系统能力:** SystemCapability.Utils.Lang
915
916**返回值:**
917
918| 类型 | 说明 |
919| -------- | -------- |
920| IterableIterator&lt;[string, string]&gt; | 返回一个ES6的迭代器。 |
921
922**示例:**
923
924```ts
925const paramsObject = new Url.URLSearchParams('fod=bay&edg=bap');
926let iter: Iterable<Object[]> = paramsObject[Symbol.iterator]();
927let pairs = Array.from(iter);
928for (let pair of pairs) {
929  console.log(pair[0] + ', ' + pair[1]);
930}
931```
932
933### tostring<sup>(deprecated)</sup>
934
935toString(): string
936
937返回序列化为字符串的搜索参数,必要时对字符进行百分比编码。
938
939> **说明:**
940>
941> 从API version 7开始支持,从API version 9开始废弃,建议使用[URLParams.tostring<sup>9+</sup>](#tostring9)替代。
942
943**系统能力:** SystemCapability.Utils.Lang
944
945**返回值:**
946
947| 类型 | 说明 |
948| -------- | -------- |
949| string | 返回序列化为字符串的搜索参数,必要时对字符进行百分比编码。 |
950
951**示例:**
952
953```ts
954let url = new Url.URL('https://developer.exampleUrl/?fod=1&bard=2');
955let params = new Url.URLSearchParams(url.search.slice(1));
956params.append('fod', '3');
957console.log(params.toString());
958```
959<!--no_check-->