Uri Parse

翻译 2018年04月17日 16:22:24
#include <string>
#include <algorithm>    // find


struct Uri
{
public:
std::wstring QueryString, Path, Protocol, Host, Port;


static Uri Parse(const std::wstring &uri)
{
Uri result;


typedef std::wstring::const_iterator iterator_t;


if (uri.length() == 0)
return result;


iterator_t uriEnd = uri.end();


// get query start
iterator_t queryStart = std::find(uri.begin(), uriEnd, L'?');


// protocol
iterator_t protocolStart = uri.begin();
iterator_t protocolEnd = std::find(protocolStart, uriEnd, L':');            //"://");


if (protocolEnd != uriEnd)
{
std::wstring prot = &*(protocolEnd);
if ((prot.length() > 3) && (prot.substr(0, 3) == L"://"))
{
result.Protocol = std::wstring(protocolStart, protocolEnd);
protocolEnd += 3;   //      ://
}
else
protocolEnd = uri.begin();  // no protocol
}
else
protocolEnd = uri.begin();  // no protocol


// host
iterator_t hostStart = protocolEnd;
iterator_t pathStart = std::find(hostStart, uriEnd, L'/');  // get pathStart


iterator_t hostEnd = std::find(protocolEnd,
(pathStart != uriEnd) ? pathStart : queryStart,
L':');  // check for port


result.Host = std::wstring(hostStart, hostEnd);


// port
if ((hostEnd != uriEnd) && ((&*(hostEnd))[0] == L':'))  // we have a port
{
hostEnd++;
iterator_t portEnd = (pathStart != uriEnd) ? pathStart : queryStart;
result.Port = std::wstring(hostEnd, portEnd);
}


// path
if (pathStart != uriEnd)
result.Path = std::wstring(pathStart, queryStart);


// query
if (queryStart != uriEnd)
result.QueryString = std::wstring(queryStart, uri.end());


return result;


}   // Parse
};  // uri

parseUri 1.2: Split URLs in JavaScript

原文:http://blog.stevenlevithan.com/archives/parseuri
  • Joyhen
  • Joyhen
  • 2014-04-25 10:25:24
  • 1312

Android开发笔记——Uri.parse的详细资料

分清 URI、URL 和 URN简单的说:www.baidu.com 是URI,www.google.com/cn,有/就是URL。1.什么是URIWeb上可用的每种资源 - HTML文档、图像、视频...
  • fd27132981
  • fd27132981
  • 2014-01-03 10:28:41
  • 7400

Uri.parse()用法

1,调web浏览器 Uri myBlogUri = Uri.parse("http://xxxxx.com"); returnIt = new Intent(Intent.ACTION_VIEW,...
  • a550508153
  • a550508153
  • 2016-01-27 20:24:05
  • 1278

APK反编译实录

Reverse Engineering
  • myfather103
  • myfather103
  • 2016-09-20 11:39:04
  • 334

Uri.parse与Uri.fromFile播放视屏

Uri.parse与Uri.fromFile在播放是屏的时候要注意的 在使用Uri.parse()的时候前面需要加一个"file://" 下面分享一个播放视屏的工具方法: public static...
  • ZHOU452840622
  • ZHOU452840622
  • 2016-12-12 16:27:24
  • 1230

Uri.parse(...)

1,调web浏览器  Uri myBlogUri = Uri.parse("http://xxxxx.com");  returnIt = new Intent(Intent.ACTION_VIEW,...
  • qreqt123
  • qreqt123
  • 2017-01-05 19:54:32
  • 258

安卓简单记事本实例

记事本实例 1.功能需求 a.实现能够添加文字,图片,视频 b.能够在listView中将文字,图片,视频呈现 c.能够进行删除操作 2.需要的知识点 a.数据库 b.页面跳转及传递数据...
  • qq_34375473
  • qq_34375473
  • 2017-02-19 14:52:54
  • 298

Steven Levithan 的 parseUri()

Steven Levithan,殿堂级人物,其 RegExp 代码必须保留细读 // parseUri 1.2.2 // (c) Steven Levithan // MIT License fu...
  • zhangxin09
  • zhangxin09
  • 2012-08-29 10:51:09
  • 2068

android中关于android.net.Uri的问题

背景:今天裁剪图片的时候给方法传入Uri对象,起初写法为:crop(Uri.parse(CameraPhoto.getPhotoPath()));   突然发现一直提示不能加载该图片 纠结半天,突...
  • u012250875
  • u012250875
  • 2015-10-15 21:03:02
  • 1060

mac versions 报错 unable to parse url

当svn路径中含有中文时,会莫名其妙的报一下错误“”
  • csdehaolin
  • csdehaolin
  • 2014-10-10 17:33:11
  • 2302
收藏助手
不良信息举报
您举报文章:Uri Parse
举报原因:
原因补充:

(最多只允许输入30个字)