2017-08-07 36 views
2

我有以下网址。如何从网址中提取ID? Google表格

https://docs.google.com/spreadsheets/d/1mrsetjgfZI2BIypz7SGHMOfHGv6kTKTzY0xOM5c6TXY/edit#gid=1842172258 
https://docs.google.com/a/example.com/spreadsheets/d/1mrsetjgfZI2BIypz7SGHMOfHGv6PTKTzY0xOM5c6TXY/edit#gid=1842172258 
https://docs.google.com/spreadsheets/d/1mrsetjgfZI2BIypz7SGHMOfHGv6kTKTzY0xOM5c6TXY 

的foreach网址,我需要提取表ID:1mrsetjgfZI2BIypz7SGHMOfHGv6PTKTzY0xOM5c6TXY成Java字符串。

我想用的分裂,但它不能与所有测试用例工作:

String string = "https://docs.google.com/spreadsheets/d/1mrsetjgfZI2BIypz7SGHMOfHGv6kTKTzY0xOM5c6TXY/edit#gid=1842172258"; 
String[] parts = string.split("/"); 
String res = parts[parts.length-2]; 
Log.d("hello res",res); 

我这怎么可能?

+0

是否ID始终遵循/表格/ d /?如果是这样,那么你可以编写一个查找/ spreadsheets/d /的正则表达式,然后捕获该组件。你不需要使用'split'。你仍然可以使用'split'并搜索等同于“电子表格”和“d”的数组元素。如果还有其他情况下,身份证不符合这个要求,则必须弄清楚可能性。 – ajb

回答

1

它看起来像你找始终遵循ID“/表格/ d /”如果是这样的话,你可以更新你的代码到

 String string = "https://docs.google.com/spreadsheets/d/1mrsetjgfZI2BIypz7SGHMOfHGv6kTKTzY0xOM5c6TXY/edit#gid=1842172258"; 
     String[] parts = string.split("spreadsheets/d/"); 
     String result; 
     if(parts[1].contains("/")){ 
      String[] parts2 = parts[1].split("/"); 
      result = parts2[0]; 
     } 
     else{ 
      result=parts[1]; 
     } 
     System.out.println("hello "+ result); 
0

使用正则表达式

Pattern pattern = Pattern.compile("(?<=\\/d\\/)[^\\/]*"); 
Matcher matcher = pattern.matcher(url); 
System.out.println(matcher.group(1)); 

使用Java

String result = url.substring(url.indexOf("/d/") + 3); 
int slash = result.indexOf("/"); 
result = slash == -1 ? result 
         : result.substring(0, slash); 
System.out.println(result); 
1

您可以使用正则表达式\/d\/(.*?)(\/|$)regex demo)来解决你的问题,如果你仔细看,你可以看到,ID d//end of line之间存在,你可以得到这之间的每一件事情,看看这个代码演示:

String[] urls = new String[]{ 
    "https://docs.google.com/spreadsheets/d/1mrsetjgfZI2BIypz7SGHMOfHGv6kTKTzY0xOM5c6TXY/edit#gid=1842172258", 
    "https://docs.google.com/a/example.com/spreadsheets/d/1mrsetjgfZI2BIypz7SGHMOfHGv6PTKTzY0xOM5c6TXY/edit#gid=1842172258", 
    "https://docs.google.com/spreadsheets/d/1mrsetjgfZI2BIypz7SGHMOfHGv6kTKTzY0xOM5c6TXY" 
}; 
String regex = "\\/d\\/(.*?)(\\/|$)"; 

for (String url : urls) { 
    Pattern pattern = Pattern.compile(regex); 
    Matcher matcher = pattern.matcher(url); 

    while (matcher.find()) { 
     System.out.println(matcher.group(1)); 
    } 
} 

输出

1mrsetjgfZI2BIypz7SGHMOfHGv6kTKTzY0xOM5c6TXY 
1mrsetjgfZI2BIypz7SGHMOfHGv6PTKTzY0xOM5c6TXY 
1mrsetjgfZI2BIypz7SGHMOfHGv6kTKTzY0xOM5c6TXY