小编Reg*_*kie的帖子

正则表达式与 string:find() 用于简单单词边界

假设我只需要找出从文件读取的一行是否包含有限单词集中的单词。

一种方法是使用如下的正则表达式

.*\y(good|better|best)\y.*
Run Code Online (Sandbox Code Playgroud)

实现此目的的另一种方法是使用如下伪代码:

 if ( (readLine.find("good")   != string::npos) ||
      (readLine.find("better") != string::npos) ||
      (readLine.find("best")   != string::npos) )
 {
   // line contains a word from a finite set of words.
 }
Run Code Online (Sandbox Code Playgroud)

哪种方式会有更好的性能?(即速度和CPU利用率)

c++ regex performance search

5
推荐指数
1
解决办法
3856
查看次数

如何以编程方式选择所有WebView内容?

有没有办法以编程方式选择所有 WebView内容?

我知道如何将WebView置于"文本选择模式".但这依赖于用户手动进行选择.

如果有一种方法可以以编程方式选择所有 WebView内容,我该怎么做?

clipboard android selection webview

5
推荐指数
1
解决办法
1452
查看次数

jsoup引号和空格

我试图使用Jsoup选择以下HTML代码段中的段落:

<div class="abc ">
<p class="de">Very short paragraph.</p>
</div>
Run Code Online (Sandbox Code Playgroud)

为此,我使用以下Java代码片段:

Elements divs = document.select("div[class=abc ]");
for (Element div : divs) {
  Log.v("iwashere", String.format("div[class=abc ]"));
  Elements ppp = document.select("p[class=de]");                   
  for (Element p : ppp) {
    Log.v("iwashere", p.text());
    break;                                                
  } 
}
Run Code Online (Sandbox Code Playgroud)

问题是,由于某种原因,Jsoup似乎没有拿起"DIV [CLASS = ABC]"(在Log.v("iwashere")一直没有出现在日志中.

起初,我认为尾随空间可能是一个问题,所以我也尝试过

Elements divs = document.select("div[class=abc]");
Run Code Online (Sandbox Code Playgroud)

但这也没有帮助.

上面的代码可能有什么问题?

jsoup

5
推荐指数
1
解决办法
3524
查看次数

Jsoup.parse() 与 Jsoup.parse() - 或者 Jsoup 中的 URL 检测如何工作?

Jsoup 有 2 个html parse() 方法:

  1. parse(String html) - “由于没有指定基本 URI,绝对 URL 检测依赖于包含标签的 HTML。”
  2. parse(String html, String baseUri) - “从中检索 HTML 的 URL。用于将相对 URL 解析为绝对 URL,发生在 HTML 声明标签之前。”

我很难理解两者之间差异的含义

  1. 在第二个版本中,“在HTML 声明标签之前parse()将相对 URL 解析为绝对 URL ”是什么意思?如果 页面中从未出现过标签怎么办?<base href><base href>
  2. 绝对URL检测的目的是什么?为什么Jsoup需要查找绝对URL?
  3. 最后但也是最重要的:是baseUriHTML 页面的完整 URL(如原始文档中的措辞)还是HTML 页面的基本URL?

java html-parsing jsoup

5
推荐指数
1
解决办法
3312
查看次数

Android中的String有长度限制吗?

我设法将一个网页读入一个字符串,但是当我使用Log.d()将它打印到LogCat时,它总是显示少于该页面上的实际内容.

这让我怀疑以下一个(或多个)是可能的解释:

  1. 在Android中,String可以动态增长,但最终会受到某些硬编码MAX_LENGTH的约束.
  2. Log.d()是截断String输出的那个.

Android中的字符串是否有长度限制?

如果没有,有什么可能解释截断我的字符串?

java string android logcat

4
推荐指数
1
解决办法
4937
查看次数

Jsoup:select()在不应该返回时返回空

我试图在维基百科的谷歌入口页面上选择信息框:http://en.m.wikipedia.org/wiki/Google

所以,我打电话给:

contentDiv = document.select("div[id=content]").first();
Run Code Online (Sandbox Code Playgroud)

哪个按预期工作,然后我做:

Elements infoboxes = contentDiv.select("table[class=infobox]");
Run Code Online (Sandbox Code Playgroud)

然后我检查infoboxes.isEmpty(),我惊呆了发现它是空的!

我检查并验证该元素contentDiv包含以下内容:

<table class="infobox vcard" style="width: 22em;" cellspacing="5">
Run Code Online (Sandbox Code Playgroud)

那么,为什么contentDiv.select("table[class=infobox]")返回空?

更新:我测试了以上,contentDiv.select("table[class=infobox vcard]")它工作正常!这很奇怪,因为我知道,与table.infobox.vcard仅选择精确多类元素的符号不同,table[class=infobox]应该选择至少 infobox在其列出的类中的所有表.

顺便说一下,我用不同的维基百科条目测试了代码,其中包含:

<table class="infobox biota" style="text-align: left; width: 200px; font-size: 100%;">
Run Code Online (Sandbox Code Playgroud)

并且contentDiv.select("table[class=infobox]")表现完全符合预期,将表元素作为第一项返回infoboxes.

知道为什么不一致吗?什么可以解释这种奇怪的行为?

有可能我偶然发现了一个Jsoup错误吗?

(我使用的是jsoup-1.5.2,不是最新的,但我不需要HTML5支持,由于各种原因,我无法立即升级到最新的1.6.1).

java css-selectors html-parsing jsoup

4
推荐指数
1
解决办法
2510
查看次数

如何在不编写程序的情况下确定user.home的值?

在Windows XP系统中,有没有办法确定Java的user.home系统属性的当前值,无需像这样编写示例程序?

即从命令行或控制面板或注册表等?

java

4
推荐指数
1
解决办法
4174
查看次数

window.clipboardData不是Javascript的一部分?

在我搜索以编程方式选择WebView内容的Javascript方式时,我遇到了这个Javascript代码片段,它在window对象中名为clipboardData的成员中使用名为setData()的方法.

但是当我试图在Javascript引用中找到它的文档时,无法找到clipboardData.

为什么?

window.clipboardData不是Javascript或DOM的一部分吗?

javascript dom clipboarddata

3
推荐指数
1
解决办法
5388
查看次数

什么时候onNewPicture()被调用?

onNewPicture()的文档只说:

通知听众图片已更改

我的问题是:图片什么时候改变?

我注意到有些网页生成了几十个onNewPicture(),所以很明显,在WebView上渲染页面的过程中,"图片"会多次发生变化.

是什么让WebView图片发生变化?

我没有看到任何生成少于2个onNewPicture()调用的页面页面,因此对于任何给定的HTML页面,onNewPicture()是否保证被多次调用?

android webview webviewclient

3
推荐指数
1
解决办法
1453
查看次数

java正则表达式过滤掉非英文文本

我发现了一些对正则表达式过滤掉非英语的引用,但它们都不是在 Java 中的,除了它们都指的是与我试图解决的问题有些不同的问题:

  1. 用空格替换所有非英文字符。
  2. 创建一个方法,该方法true 在字符串包含任何非英语字符时返回。

“英文文本”不仅指实际的字母和数字,还指标点符号。

到目前为止,我能够为目标 #1 带来的东西非常简单:

String.replaceAll("\\W", " ")
Run Code Online (Sandbox Code Playgroud)

事实上,如此简单以至于我怀疑我遗漏了什么......你在上面发现任何警告吗?

至于目标#2,我可以简单trim()的字符串上面replaceAll(),然后检查它是否是空的。但是......有没有更有效的方法来做到这一点?

java regex

2
推荐指数
1
解决办法
1万
查看次数