如何在字符串中返回href,我可以访问起始位置但不知道如何获得最后位置:
这是我到目前为止所做的:
String str = "sadf ad fas dfa http://www.google.com sdfa sadf as dfas";
int index = str.indexOf("http");
String href = str.substring(index , ???);
最终指数应该是什么?
请注意,这是针对j2me&我需要尽可能减少下载占用空间,因此我无法使用正则表达式或第三方正则表达式库。
答案 0 :(得分:1)
如果没有找到空格,最好的选择可能是剪切最接近索引的空间或直到字符串的末尾。
答案 1 :(得分:0)
可靠地执行此操作的唯一方法是使用正则表达式。在Java SE中,您可以执行以下操作:
Pattern p = Pattern.compile("a*b"); // This is the Regular Expression to match
Matcher m = MY_PATTERN.matcher("aaaaaaab"); // This is the String to search through
while (m.find()) { // While there are matches found
String s = m.group(1); // Set String s equal to matches of the entire regex
// s now contains "aaaaaaab"
}
组基本上是正则表达式的一部分。如果用括号括起部分内容,它会创建一个“组”,您可以选择性地访问仅与正则表达式的“部分”或“组”匹配的字符串部分。
在J2ME中,您需要导入一个像这样的正则表达式库:
http://code.google.com/p/regexp-me/
这是相同的整体概念,语法略有不同
答案 2 :(得分:0)
使用正则表达式库可能效率非常低,如果这是您在应用程序中唯一需要的地方。
在当前用例中找到下一个空格字符的索引可能已经足够好了,但它不是一个完整的面向未来的解决方案。
您可以做的是编写一个方法,根据URI的标准定义从String中提取所有URI:http://www.ietf.org/rfc/rfc2396.txt
(实际上,这意味着要查找形成URI特定区域的特殊字符以及不允许在URI中的字符)
这也是你如何意识到你应该真正寻找“http://”的索引,而不仅仅是“http”