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<string, string> | string | URLParams) 21 22URLParams的构造函数。 23 24**系统能力:** SystemCapability.Utils.Lang 25 26**参数:** 27 28| 参数名 | 类型 | 必填 | 说明 | 29| -------- | -------- | -------- | -------- | 30| init | string[][] \| Record<string, string> \| string \| URLParams | 否 | 入参对象。<br/>- string[][]:字符串二维数组<br/>- Record<string, string>:对象列表<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<[string, string]> | 返回一个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<string> 289 290返回一个所有键值对的name的ES6迭代器。 291 292**系统能力:** SystemCapability.Utils.Lang 293 294**返回值:** 295 296| 类型 | 说明 | 297| -------- | -------- | 298| IterableIterator<string> | 返回一个所有键值对的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<string> 314 315返回一个所有键值对的value的ES6迭代器。 316 317**系统能力:** SystemCapability.Utils.Lang 318 319**返回值:** 320 321| 类型 | 说明 | 322| -------- | -------- | 323| IterableIterator<string> | 返回一个所有键值对的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<[string, string]> 339 340返回一个ES6的迭代器,迭代器的每一项都是一个 JavaScript Array。Array的第一项是name,Array的第二项是value。 341 342**系统能力:** SystemCapability.Utils.Lang 343 344**返回值:** 345 346| 类型 | 说明 | 347| -------- | -------- | 348| IterableIterator<[string, string]> | 返回一个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<string, string> | 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<string, string> \| string \| URLSearchParams | 否 | 入参对象。<br/>- string[][]:字符串二维数组<br/>- Record<string, string>:对象列表<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<[string, string]> | 返回一个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<string> 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<string> | 返回一个所有键值对的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<string> 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<string> | 返回一个所有键值对的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<[string, string]> 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<[string, string]> | 返回一个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-->