TSR*_*TSR 5 java string url google-sheets-api
我有以下网址。
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
Run Code Online (Sandbox Code Playgroud)
Foreach url,我需要将工作表 id: 提取1mrsetjgfZI2BIypz7SGHMOfHGv6PTKTzY0xOM5c6TXY
到一个 java 字符串中。
我正在考虑使用split但它不能用于所有测试用例:
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 );
Run Code Online (Sandbox Code Playgroud)
我怎么可能呢?
您可以使用 regex \/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\\/(.*?)(\\/|$)";
Pattern pattern = Pattern.compile(regex);
for (String url : urls) {
Matcher matcher = pattern.matcher(url);
while (matcher.find()) {
System.out.println(matcher.group(1));
}
}
Run Code Online (Sandbox Code Playgroud)
输出
1mrsetjgfZI2BIypz7SGHMOfHGv6kTKTzY0xOM5c6TXY
1mrsetjgfZI2BIypz7SGHMOfHGv6PTKTzY0xOM5c6TXY
1mrsetjgfZI2BIypz7SGHMOfHGv6kTKTzY0xOM5c6TXY
Run Code Online (Sandbox Code Playgroud)
看起来您要查找的 id 始终遵循“/spreadsheets/d/”,如果是这种情况,您可以将代码更新为该 ID
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);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3893 次 |
最近记录: |