1

如何在字符串中返回 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 的,我需要尽量减少下载占用,因此我不能使用正则表达式或第三方正则表达式库。

4

3 回答 3

1

如果没有找到空格,您最好的选择可能是切割最接近索引的空间或直到字符串的末尾。

于 2012-06-16T14:55:06.877 回答
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/

这是相同的整体概念,语法略有不同

于 2012-06-16T15:06:44.480 回答
0

如果这是您在应用程序中唯一需要它的地方,那么使用正则表达式库可能会非常低效。

对于您当前的用例,在实践中查找下一个空格字符的索引可能已经足够了,但这并不是一个完整的面向未来的解决方案。

您可以做的是编写一个方法,根据 URI 的标准定义从字符串中提取所有 URI:http ://www.ietf.org/rfc/rfc2396.txt

(实际上,这意味着寻找构成 URI 特定区域的特殊字符以及不允许出现在 URI 中的字符)

这也是您可能意识到您实际上应该寻找“http://”的索引,而不仅仅是“http”

于 2012-06-18T02:47:51.657 回答