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 class Test
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中提取特定子字符串保存的主要内容,如果未能解决你的问题,请参考以下文章

从特定子字符串模式中提取数字

如何从 C++ 中的 getline 函数中提取特定的子字符串?

在特定单词之后从字符串中获取子字符串

从字符串中提取子字符串

如何使用正则表达式将特定的子字符串提取到新行中?

如何从Java中的字符串中提取大写子字符串?