0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

OpenHarmony语言基础类库【@ohos.uri (URI字符串解析)】

jf_46214456 来源:jf_46214456 作者:jf_46214456 2024-04-24 21:40 次阅读

本模块提供URI字符串解析的相关功能。

说明:

本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。

导入模块

import uri from '@ohos.uri'

URI

属性

系统能力: SystemCapability.Utils.Lang

名称类型可读可写说明
schemestring获取URI 的协议部分。
userInfostring获取 URI 的用户信息部分。
hoststring获取 URI 的主机名部分(不带端口)。
portstring获取 URI 的端口部分。
pathstring获取 URI 的路径部分。
querystring获取 URI 的查询部分。
fragmentstring获取 URI 的片段部分
authoritystring获取此URI的解码权限组件部分。
sspstring获取URI的解码方案特定部分。

鸿蒙开发指导文档:[gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md]

搜狗高速浏览器截图20240326151450.png

命名规则

命名形式:

标准uri定义由以下三个部分组成 [scheme:]scheme-specific-part[#fragment]

  • scheme: 协议名,根据需要填写。例如http、https、ftp、datashare、dataability等。
  • scheme-specific-part: URI的特定解码方案特定部分,由[//][authority][path][?query]组成,根据需要填写。
    • authority: URI的解码权限组件部分。由[userinfo@]host[:port]组成,根据需要填写。
      • userinfo: 用户信息,根据需要填写。
      • host: 服务器的主机名部分,当authority存在时,此项必填。
      • port: 服务器端口,根据需要填写。
    • path: 路径信息,根据需要填写。
    • query: 查询部分,根据需要填写。
  • fragment: 片段部分,根据需要填写。

URI示例:

const result1 = new uri.URI("ftp://ftp.aaa.bbb.ccc/dddd/eee.txt");
console.log(result1.host) // ftp.aaa.bbb.ccc
console.log(result1.fragment) // null
console.log(result1.path) // /dddd/eee.txt
console.log(result1.scheme) // ftp
console.log(result1.userInfo) // null
console.log(result1.port) // -1
console.log(result1.query) // null

const result2 = new uri.URI("gopher://spinaltap.micro.umn.edu/00/Weather/California/Los%20Angeles#fragment");
console.log(result2.host) // spinaltap.micro.umn.edu
console.log(result2.fragment) // fragment
console.log(result2.path) // /00/Weather/California/Los Angeles
console.log(result2.scheme) // gopher
console.log(result2.userInfo) // null
console.log(result2.port) //-1
console.log(result2.query) // null

const result3 = new uri.URI("datashare:///com.samples.datasharetest.DataShare/DB00/TBL00");
console.log(result3.host) // null
console.log(result3.fragment) // null
console.log(result3.path) // /com.samples.datasharetest.DataShare/DB00/TBL00
console.log(result3.scheme) // datashare
console.log(result3.userInfo) // null
console.log(result3.port) // -1
console.log(result3.query) // null

const result4 = new uri.URI("https://username:password@host:8080/directory/file?foo=1&bar=2#fragment");
console.log(result4.host) // host
console.log(result4.fragment) // fragment
console.log(result4.path) // /directory/file
console.log(result4.scheme) // https
console.log(result4.userInfo) // username:password
console.log(result4.port) // 8080
console.log(result4.query) // foo=1&bar=2

const result5 = new uri.URI("dataability:///com.example.DataAbility");
console.log(result5.host) // null
console.log(result5.fragment) // null
console.log(result5.path) // /com.example.DataAbility:
console.log(result5.scheme) // dataability
console.log(result5.userInfo) // null
console.log(result5.port) // -1
console.log(result5.query) // null

constructor

constructor(uri: string)

constructor是URI的构造函数。

系统能力: SystemCapability.Utils.Lang

参数

参数名类型必填说明
uristring入参对象。

错误码:

以下错误码的详细介绍请参见[语言基础类库错误码]。

错误码ID错误信息
10200002Invalid uri string.

示例:

let mm = 'https://username:password@host:8080/directory/file?foo=1&bar=2#fragment';
new uri.URI(mm); // Output 'https://username:password@host:8080/directory/file?foo=1&bar=2#fragment';
new uri.URI('https://username:password@host:8080'); // Output 'https://username:password@host:8080';

toString

toString(): string

系统能力: SystemCapability.Utils.Lang

返回适用于URI中的查询字符串。

返回值:

类型说明
string返回网址的字符串序列化。

示例:

const result = new uri.URI('https://username:password@host:8080/directory/file?query=pppppp#qwer=da');
let result1 = result.toString();

equals(deprecated)

equals(other: URI): boolean

判断此URI是否与其他URI对象相等。

说明:

从API version 8开始支持,从API version 9开始废弃,建议使用[equalsTo9+]替代。

系统能力: SystemCapability.Utils.Lang

参数:

参数名类型必填说明
otherURI需要比较的URI对象。

返回值:

类型说明
boolean返回true表示相等,否则返回false。

示例:

const uriInstance = new uri.URI('https://username:password@host:8080/directory/file?query=pppppp#qwer=da');
const uriInstance1 = new uri.URI('https://username:password@host:8080/directory/file?query=pppppp#qwer=da');
uriInstance.equals(uriInstance1);

equalsTo9+

equalsTo(other: URI): boolean

判断此URI是否与其他URI对象相等。

系统能力: SystemCapability.Utils.Lang

参数:

参数名类型必填说明
otherURI需要比较的URI对象。

返回值:

类型说明
boolean返回true表示相等,否则返回false。

示例:

const uriInstance = new uri.URI('https://username:password@host:8080/directory/file?query=pppppp#qwer=da');
const uriInstance1 = new uri.URI('https://username:password@host:8080/directory/file?query=pppppp#qwer=da');
let result = uriInstance.equalsTo(uriInstance1);

checkIsAbsolute

checkIsAbsolute(): boolean

判断此URI是否为绝对URI(是否定义了scheme组件)。

系统能力: SystemCapability.Utils.Lang

返回值:

类型说明
boolean如果是绝对URI返回true,否则返回false。

示例:

const uriInstance = new uri.URI('https://username:password@www.qwer.com:8080?query=pppppp');
console.log(`${uriInstance.checkIsAbsolute()}`); // true
const uriInstance1 = new uri.URI('xxx.com/suppliers.htm');
console.log(`${uriInstance1.checkIsAbsolute()}`); // false

normalize

HarmonyOSOpenHarmony鸿蒙文档籽料:mau123789是v直接拿

normalize(): URI

规范化此URI的路径。

系统能力: SystemCapability.Utils.Lang

返回值:

类型说明
URI返回一个path被规范化后的URI对象。

示例:

const uriInstance = new uri.URI('https://username:password@www.qwer.com:8080/path/path1/../path2/./path3?query=pppppp');
console.log(uriInstance.path); // /path/path1/../path2/./path3
let uriInstance1 = uriInstance.normalize();
console.log(uriInstance1.path); // /path/path2/path3

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 字符串
    +关注

    关注

    1

    文章

    577

    浏览量

    20485
  • 鸿蒙
    +关注

    关注

    57

    文章

    2306

    浏览量

    42731
  • OpenHarmony
    +关注

    关注

    25

    文章

    3658

    浏览量

    16129
收藏 人收藏

    评论

    相关推荐

    C++字符串string

    string是C++编程语言中的字符串。在C++中字符串处理可以使用c语言字符串形式char *,也可以使用string
    的头像 发表于 07-10 00:26 1215次阅读
    C++<b class='flag-5'>字符串</b>string

    ArkTS语言基础-解析

    被设计用来传输和存储数据,是一种可扩展标记语言语言基础提供了[XML生成、解析与转换]的能力。 URL、
    发表于 02-20 16:44

    鸿蒙原生应用开发-ArkTS语言基础概述

    扩展标记语言语言基础提供了XML生成、解析与转换的能力。 URL、URI构造和
    发表于 03-05 15:42

    实例解析Java字符串内存管理方法

    Java[1]语言字符串操作提供了丰富的支持,它将字符串封装在三个中并提供多种字符串操作接口。在Java应用程序中,由于对
    发表于 10-27 10:20 1次下载
    实例<b class='flag-5'>解析</b>Java<b class='flag-5'>字符串</b>内存管理方法

    C语言字符串转数字实现方法

    在C/C++语言中没有专门的字符串变量,通常用字符数组来存放字符串字符串是以“\0”作为结束符。C/C++提供了丰富的
    发表于 11-14 17:50 1.3w次阅读

    C++之字符串学习的总结

    一般我们在c语言要实现对字符串操作的话,一般是采用字符数组或者一组函数来实现的,为啥这样做呢,那是因为c语言里面根本就没有字符串类型的关键字
    的头像 发表于 12-24 16:24 736次阅读

    strtok拆分字符串

    就是字符格式。有些场景需要使用多个处理器协同工作,比如单片机+openmv,它们之间需要通信,可以采用字符格式的编码方式。操作字符串,无非是两件事儿:生成字符串
    发表于 01-13 15:46 8次下载
    strtok拆分<b class='flag-5'>字符串</b>

    C语言总结_字符串全方位练习

    C语言字符串全方位练习,涉及知识点:字符串解析、大小写判断、字符串插入、字符串删除、
    的头像 发表于 08-14 09:41 1448次阅读

    C语言-字符串处理

    字符串在C语言里使用非常多,因为很多数据处理都是文本,也就是字符串,特别是设备交互、web网页交互返回的几乎都是文本数据。 这篇文章就介绍字符串定义、和基本处理的方法。
    的头像 发表于 08-14 10:05 1721次阅读

    关于STEP7功能字符串转换

    libraries---Standard Libray---TI-S7 Converting Blocks) FC编号 功能名称 描述 FC5 DI_STRING 双整数转字符串 FC16
    的头像 发表于 10-10 10:50 4078次阅读

    C语言字符串的引用方式

    在C语言程序中,字符串是存放在字符数组中的。 2. 用字符数组存放一个字符串,可以通过数组名和下标引用
    的头像 发表于 03-10 14:57 1841次阅读

    nuere-简单小巧快速的字符串解析

    neure是一个简单小巧的字符串解析, 我在开发aopt时为了优化编译时间而开发的替代regex的. 目前代码架构非常简单, 性能上比regex更快, 和nom的速度不相上下. 设
    的头像 发表于 08-14 09:54 542次阅读

    c语言字符串定义

    C语言是一种强大而广泛使用的编程语言字符串是其中一个非常重要的概念。在C语言中,字符串是由一系列字符
    的头像 发表于 11-24 10:02 1789次阅读

    C语言字符串编译函数介绍

    在C语言中,字符串实际上是使用null字符O'终止的一维字符数组。因此,一个以null结尾的字符串,包含了组成
    的头像 发表于 03-07 16:18 475次阅读
    C<b class='flag-5'>语言</b><b class='flag-5'>字符串</b>编译函数介绍

    HarmonyOS开发案例:【购物APP】

    提供URI字符串解析的相关功能。
    的头像 发表于 04-24 20:47 470次阅读
    HarmonyOS开发案例:【购物APP】