java 从一个URL中提取特定子字符串保存
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 从一个URL中提取特定子字符串保存相关的知识,希望对你有一定的参考价值。
例如给定一个URL地址:ftp://dvdmaker.9966.org:1981/bdig/123/dfshio/sfjgo/
我需要提取前一部分地址:“dvdmaker.9966.org:1981”存入一变量a
提取后一部分地址:“bdig/123/dfshio/sfjgo/”存入变量b
怎样写代码操作
要注意地址的位数不固定,但是URL的总体结构固定
前一部分的地址都是第一个“/”之前的部分
已经解决了 呵呵
String str = "ftp://dvdmaker.9966.org:1981/bdig/123/dfshio/sfjgo/";
String[] st = str.split("/",4);
String a=st[2];
String b=st[3];
System.out.println(a);
System.out.println(b);
public static void main(String[] args)
String url="ftp://dvdmaker.9966.org:1981/bdig/123/dfshio/sfjgo/";
//首先去掉开头部分如:ftp://,http://等
url=url.substring(url.indexOf("//")>=0?(url.indexOf("//")+2):0);
//查找出一个/出现的地方
int index=url.indexOf("/")<0?url.length():url.indexOf("/");
//前面部分
String before=url.substring(0,index);
//后面部分
String end;
if(index==url.length())//说明没有后面部分
end="";
else
end=url.substring(index+1);
System.out.println(url);
System.out.println(before);
System.out.println(end);
参考技术A 可以通过java的”substring“方法截取出对应的字符串,前提是知道开始和结束的字符串的值:
String getSignInfo = reqResult.substring(reqResult.indexOf("(") + 1, reqResult.indexOf(")"));
解释:上述方法就是截取reqResult字符串的中开始”(“和结束”)“中间部分的内容,”1“就是”)“的长度,之后将获取的结果赋值给”getSignInfo进行输出即可“;
备注:以上方法通用于截取字符串,数字”6“和开始结束字符串根据实际需要修改即可。 参考技术B String url = request.getRequestURL().toString();
//ftp://dvdmaker.9966.org:1981/bdig/123/dfshio/sfjgo/
String a = request.getRemoteHost()+":"+request.getServerPort();
//dvdmaker.9966.org:1981
String b = request.getRequestURI();
//bdig/123/dfshio/sfjgo/
如果还有参数?name=aaa
String q = request.getQueryString();
//name=aaa 参考技术C 我在网吧上的,所以不能做实例给你看
不过可以说说自己的思路
我记得session里面有一个获取当前地址的geturl的方法,你可以查查
然后用一个字符串储存,在将这个String用拆分的方法取特殊的字符将其划分,就行了
如何解析URL并提取所需的子字符串
说我有这样的字符串:"http://something.example.com/directory/"
我想要做的是解析这个字符串,并从字符串中提取"something"
。
第一步,显然要检查以确保该字符串包含"http://"
- 否则,它应该忽略该字符串。
但是,我如何才能在该字符串中提取"something"
?假设将要评估的所有字符串都具有类似的结构(即我正在尝试提取URL的子域 - 如果正在检查的字符串确实是有效的URL - 其中有效的是以"http://"
开头)。
谢谢。
附:我知道如何检查第一部分,即我可以简单地将字符串拆分为"http://"
,但这并不能解决完整的问题,因为这将产生"http://something.example.com/directory/"
。我想要的只是"something"
,没有别的。
我这样做:
require 'uri'
uri = URI.parse('http://something.example.com/directory/')
uri.host.split('.').first
=> "something"
URI内置于Ruby中。它不是功能最齐全的,但它足以为大多数URL执行此任务。如果你有IRIs然后看看Addressable::URI。
您可以使用URI
uri = URI.parse("http://something.example.com/directory/")
puts uri.host
# "something.example.com"
然后你就可以在主机上工作了。
或者有来自domainatrix
的宝石Remove subdomain from string in ruby
require 'rubygems'
require 'domainatrix'
url = Domainatrix.parse("http://foo.bar.pauldix.co.uk/asdf.html?q=arg")
url.public_suffix # => "co.uk"
url.domain # => "pauldix"
url.subdomain # => "foo.bar"
url.path # => "/asdf.html?q=arg"
url.canonical # => "uk.co.pauldix.bar.foo/asdf.html?q=arg"
你可以拿走子域名。
好吧,你可以使用正则表达式。像/http://([^.]+)/
这样的东西,也就是第一组非'''。 http
之后的字母。
看看http://rubular.com/。您也可以针对一组测试测试正则表达式,这对于学习此工具非常有用。
以上是关于java 从一个URL中提取特定子字符串保存的主要内容,如果未能解决你的问题,请参考以下文章