URL字符串解析

About 30 min

URL字符串解析

说明: 从 API Version 7 开始支持。

导入模块

import Url from '@ohos.url' 
1

权限

URLSearchParams

constructor

constructor(init?: string[][] | Record<string, string> | string | URLSearchParams)

URLSearchParams的构造函数。

  • 参数:

    参数名

    类型

    必填

    说明

    init

    string[][] | Record<string, string> | string | URLSearchParams

    入参对象。

    • string[][]:字符串二维数组
    • Record<string, string>:对象列表
    • string:字符串
    • URLSearchParams:对象

  • 示例:

    var objectParams = new URLSearchParams([ ['user1', 'abc1'], ['query2', 'first2'], ['query3', 'second3'] ]);
    var objectParams1 = new URLSearchParams({"fod" : 1 , "bard" : 2});
    var objectParams2 = new URLSearchParams('?fod=1&bard=2');
    var urlObject = new URL('https://developer.mozilla.org/?fod=1&bard=2');
    var params = new URLSearchParams(urlObject .search);
    
    1
    2
    3
    4
    5

append

append(name: string, value: string): void

将新的键值对插入到查询字符串。

  • 参数:

    参数名

    类型

    必填

    说明

    name

    string

    需要插入搜索参数的键名。

    value

    string

    需要插入搜索参数的值。

  • 示例:

    let urlObject = new URL('https://developer.exampleUrl/?fod=1&bard=2');
    let paramsObject = new URLSearchParams(urlObject.search.slice(1));
    paramsObject.append('fod', 3);
    
    1
    2
    3

delete

delete(name: string): void

删除指定名称的键值对。

  • 参数:

    参数名

    类型

    必填

    说明

    name

    string

    需要删除的键值名称。

  • 示例:

    let urlObject = new URL('https://developer.exampleUrl/?fod=1&bard=2');
    let paramsobject = new URLSearchParams(urlObject.search.slice(1));
    paramsobject.delete('foo');
    
    1
    2
    3

getAll

getAll(name: string): string[]

获取指定名称的所有键值对。

  • 参数:

    参数名

    类型

    必填

    说明

    name

    string

    指定的键值名称。

  • 返回值:

    类型

    说明

    string[]

    返回指定名称的所有键值对。

  • 示例:

    let urlObject = new URL('https://developer.exampleUrl/?fod=1&bard=2'); 
    let paramsObject = new URLSearchParams(urlObject.search.slice(1)); 
    paramsObject.append('fod', 3); // Add a second value for the foo parameter.
    console.log(params.getAll('fod')) // Output ["1","3"].
    
    1
    2
    3
    4

entries

entries(): IterableIterator<[string, string]>

返回一个ES6的迭代器,迭代器的每一项都是一个 JavaScript Array。Array的第一项是name,Array的第二项是value。

  • 返回值:

    类型

    说明

    IterableIterator<[string, string]>

    返回一个ES6的迭代器。

  • 示例:

    var searchParamsObject = new URLSearchParams("keyName1=valueName1&keyName2=valueName2"); 
    for (var pair of searchParamsObject .entries()) { // Show keyName/valueName pairs
        console.log(pair[0]+ ', '+ pair[1]);
    }
    
    1
    2
    3
    4

forEach

forEach(callbackfn: (value: string, key: string, parent: this) => void): void

通过回调函数来遍历URLSearchParams实例对象上的键值对。

  • 参数:

    参数名

    类型

    必填

    说明

    callbackfn

    function

    回调函数。

    表 1 callbackfn的参数说明

    参数名

    类型

    必填

    说明

    value

    string

    当前遍历到的键值。

    key

    string

    当前遍历到的键名。

    searchParams

    Object

    当前调用forEach方法的实例对象。

  • 示例:

    const myURLObject = new URL('https://developer.exampleUrl/?fod=1&bard=2'); 
    myURLObject.searchParams.forEach((value, name, searchParams) => {  
        console.log(name, value, myURLObject.searchParams === searchParams);
    });
    
    1
    2
    3
    4

get

get(name: string): string | null

获取指定名称对应的第一个值。

  • 参数:

    参数名

    类型

    必填

    说明

    name

    string

    指定键值对的名称。

  • 返回值:

    类型

    说明

    string

    返回第一个值。

    null

    如果没找到,返回 null。

  • 示例:

    var paramsOject = new URLSearchParams(document.location.search.substring(1)); 
    var name = paramsOject.get("name"); // is the string "Jonathan" 
    var age = parseInt(paramsOject.get("age"), 10); // is the number 18
    var address = paramsOject.get("address"); // null
    
    1
    2
    3
    4

has

has(name: string): boolean

判断一个指定的键名对应的值是否存在。

  • 参数:

    参数名

    类型

    必填

    说明

    name

    string

    要查找的参数的键名。

  • 返回值:

    类型

    说明

    boolean

    是否存在相对应的key值,存在返回true,否则返回false。

  • 示例:

    let urlObject = new URL('https://developer.exampleUrl/?fod=1&bard=2');
    let paramsObject = new URLSearchParams(urlObject.search.slice(1)); 
    paramsObject.has('bard') === true;
    
    1
    2
    3

set

set(name: string, value: string): void

将与name关联的URLSearchParams对象中的值设置为value。如果存在名称为name的键值对,请将第一个键值对的值设置为value并删除所有其他值。如果不是,则将键值对附加到查询字符串。

  • 参数:

    参数名

    类型

    必填

    说明

    name

    string

    将要设置的参数的键值名。

    value

    string

    所要设置的参数值。

  • 示例:

    let urlObject = new URL('https://developer.exampleUrl/?fod=1&bard=2');
    let paramsObject = new URLSearchParams(urlObject.search.slice(1));
    paramsObject.set('baz', 3); // Add a third parameter.
    
    1
    2
    3

sort

sort(): void

对包含在此对象中的所有键值对进行排序,并返回undefined。排序顺序是根据键的Unicode代码点。该方法使用稳定的排序算法 (即,将保留具有相等键的键值对之间的相对顺序)。

  • 示例:

    var searchParamsObject = new URLSearchParams("c=3&a=9&b=4&d=2"); // Create a test URLSearchParams object
    searchParamsObject.sort(); // Sort the key/value pairs
    console.log(searchParamsObject.toString()); // Display the sorted query string // Output a=9&b=2&c=3&d=4
    
    1
    2
    3

keys

keys(): IterableIterator<string>

返回一个所有键值对的name的ES6迭代器。

  • 返回值:

    类型

    说明

    IterableIterator<string>

    返回一个所有键值对的name的ES6迭代器。

  • 示例:

    var searchParamsObject = new URLSearchParams("key1=value1&key2=value2"); // Create a URLSearchParamsObject object for testing
    for (var key of searchParamsObject .keys()) { // Output key-value pairs
        console.log(key);
    }
    
    1
    2
    3
    4

values

values(): IterableIterator<string>

返回一个所有键值对的value的ES6迭代器。

  • 返回值:

    类型

    说明

    IterableIterator<string>

    返回一个所有键值对的value的ES6迭代器。

  • 示例

    var searchParams = new URLSearchParams("key1=value1&key2=value2"); // Create a URLSearchParamsObject object for testing
    for (var value of searchParams.values()) { 
        console.log(value);
    }
    
    1
    2
    3
    4

[Symbol.iterator]

[Symbol.iterator](): IterableIterator<[string, string]>

返回一个ES6的迭代器,迭代器的每一项都是一个 JavaScript Array。Array的第一项是name,Array的第二项是value。

  • 返回值:

    类型

    说明

    IterableIterator<[string, string]>

    返回一个ES6的迭代器。

  • 示例:

    const paramsObject = new URLSearchParams('fod=bay&edg=bap');
    for (const [name, value] of paramsObject) { 
        console.log(name, value); 
    } 
    
    1
    2
    3
    4

tostring

toString(): string

返回序列化为字符串的搜索参数,必要时对字符进行百分比编码。

  • 返回值:

    类型

    说明

    string

    返回序列化为字符串的搜索参数,必要时对字符进行百分比编码。

  • 示例:

    let url = new URL('https://developer.exampleUrl/?fod=1&bard=2');
    let params = new URLSearchParams(url.search.slice(1)); 
    params.append('fod', 3);
    console.log(params.toString());
    
    1
    2
    3
    4

URL

属性

名称

参数类型

可读

可写

说明

hash

string

获取和设置URL的片段部分。

host

string

获取和设置URL的主机部分。

hostname

string

获取和设置URL的主机名部分,不带端口。

href

string

获取和设置序列化的URL。

origin

string

获取URL源的只读序列化。

password

string

获取和设置URL的密码部分。

pathname

string

获取和设置URL的路径部分。

port

string

获取和设置URL的端口部分。

protocol

string

获取和设置URL的协议部分。

search

string

获取和设置URL的序列化查询部分。

searchParams

URLsearchParams

获取URLSearchParams表示URL查询参数的对象。

username

string

获取和设置URL的用户名部分。

constructor

constructor(url: string, base?: string | URL)

URL的构造函数。

  • 参数:

    参数名

    类型

    必填

    说明

    url

    string

    入参对象。

    base

    string | URL

    入参字符串或者对象。

    • string:字符串
    • URL:字符串或对象

  • 示例:

    var mm = 'http://username:password@host:8080';
    var a = new URL("/", mm); // Output 'http://username:password@host:8080/';
    var b = new URL(mm); // Output 'http://username:password@host:8080/';
    new URL('path/path1', b); // Output 'http://username:password@host:8080/path/path1';
    var c = new URL('/path/path1', b);  // Output 'http://username:password@host:8080/path/path1'; 
    new URL('/path/path1', c); // Output 'http://username:password@host:8080/path/path1';
    new URL('/path/path1', a); // Output 'http://username:password@host:8080/path/path1';
    new URL('/path/path1', "https://www.exampleUrl/fr-FR/toto"); // Output https://www.exampleUrl/path/path1
    new URL('/path/path1', ''); // Raises a TypeError exception as '' is not a valid URL
    new URL('/path/path1'); // Raises a TypeError exception as '/path/path1' is not a valid URL
    new URL('http://www.shanxi.com', ); // Output http://www.shanxi.com/
    new URL('http://www.shanxi.com', b); // Output http://www.shanxi.com/
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12

tostring

toString(): string

将解析过后的URL转化为字符串。

  • 返回值:

    类型

    说明

    string

    用于返回网址的字符串序列化。

  • 示例:

    const url = new URL('http://username:password@host:8080/directory/file?query=pppppp#qwer=da');
    url.toString()
    
    1
    2

toJSON

toJSON(): string

将解析过后的URL转化为JSON字符串。

  • 返回值:

    类型

    说明

    string

    用于返回网址的字符串序列化。

  • 示例:

    const url = new URL('http://username:password@host:8080/directory/file?query=pppppp#qwer=da');
    url.toString()
    
    1
    2