我需要替换不属于HTML实体的字符串中的所有&.因此字符串"This&entites >&<"将返回"This &entites > & <"
而且我想出了这个正则表达式模式:" &[a-zA-Z0-9] {2,7}; "这很好用.但是我对正则表达式并不是很熟练,当我测试超过100k迭代的速度时,它比先前使用的方法使用了两倍的时间,没有使用正则表达式.(但也不是100%工作).
Testcode:
long time = System.currentTimeMillis();
String reg = "&(?!&#?[a-zA-Z0-9]{2,7};)";
String s="a regex test 1 & 2 1&2 and &_gt; - &_lt;"
for (int i = 0; i < 100000; i++) {test=s.replaceAll(reg, "&");}
System.out.println("Finished in:" + (System.currentTimeMillis() - time) + " milliseconds");
Run Code Online (Sandbox Code Playgroud)
那么问题是,是否有一些明显的方法可以优化这个正则表达式,使其更有效?
这里有一个由Google托管的非常酷的差异类:
http://code.google.com/p/google-diff-match-patch/
我之前在一些网站上使用过它,但现在我需要在 Excel宏中使用它来比较两个单元格之间的文本.
但是,它仅适用于JavaScript,Python,Java和C++,而不适用于VBA.
我的用户仅限于Excel 2003,因此纯.NET解决方案无效.手动将代码翻译为VBA将花费太多时间并且难以升级.
我考虑的一个选项是使用.NET编译器(JScript.NET或J#)编译JavaScript或Java源代码,使用Reflector输出为VB.NET,然后最终手动将VB.NET代码降级为VBA,给我一个纯粹的VBA解决方案.在使用任何.NET编译器进行编译时遇到问题之后,我放弃了这条路径.
假设我可以使用一个可用的.NET库,我本可以使用ExcelDna(http://www.codeplex.com/exceldna)这个开源Excel插件来简化.NET代码集成.
我的最后一个想法是托管一个Internet Explorer对象,向它发送JavaScript源代码并调用它.即使我让它工作,我的猜测是它会变得很脏而且很混乱.
更新:找到解决方案!
我通过接受的答案使用了下面描述的WSC方法.我不得不稍微更改WSC代码以清理差异并返回一个VBA兼容的数组数组:
function DiffFast(text1, text2)
{
var d = dmp.diff_main(text1, text2, true);
dmp.diff_cleanupSemantic(d);
var dictionary = new ActiveXObject("Scripting.Dictionary"); // VBA-compatible array
for ( var i = 0; i < d.length; i++ ) {
dictionary.add(i, JS2VBArray(d[i]));
}
return dictionary.Items();
}
function JS2VBArray(objJSArray)
{
var dictionary = new ActiveXObject("Scripting.Dictionary");
for (var i = 0; i < objJSArray.length; i++) {
dictionary.add( i, objJSArray[ i ] );
}
return dictionary.Items(); …Run Code Online (Sandbox Code Playgroud) 有时我会听到反对使用javascript在客户端做事的论点.人们说"JavaScript效率低......或者慢".我想知道是否有支持这一结论的实际事实?
是否有任何桥梁可以使Qt与STL和Boost混合尽可能无缝且简单?
这是混合Qt和Boost的后续,其中没有给出如何实现这一点的具体答案.
我宁愿不在PHP中这样做,所以我希望有一个体面的shell脚本可以提供帮助.
我需要一个以递归方式运行目录的脚本,并查找上次修改日期的所有文件都大于某个日期.然后,它将tar文件和压缩文件保留路径信息.
我在shell脚本中有以下代码.这似乎只当它工作不是在一个函数定义.有问题的行是包含"<<"的行.错误消息是
"./run:第210行:语法错误:意外的文件结束"
如何在函数中正确写入?
init_database()
{
cd ../cfg
db.sh << ENDC
$DB_ADMIN
0
y
n
ENDC
check_status
sqlplus $DB_SCHEMA@$DB_NAME < initial_data.sql
cd -
}
Run Code Online (Sandbox Code Playgroud) 重复
很遗憾,我不知道这一点,但任何人都可以解释之间的区别:
Dim X as New Y
Run Code Online (Sandbox Code Playgroud)
和
Dim X as Y = New Y()
Run Code Online (Sandbox Code Playgroud) 我有以下问题:
我们需要找到下一个八月.换句话说,如果我们是2009-09-01我们需要2010-08-31如果我们是2009-06-21我们需要2009-08-31.
我知道我可以检查今天是否小于8月31日,但我想知道是否还有其他可能性.
有没有办法使用jQuery过滤多行选择框?
我是jQuery的新手,似乎无法找到最好的方法.
例如,如果我有:
<select size="10">
<option>abc</option>
<option>acb</option>
<option>a</option>
<option>bca</option>
<option>bac</option>
<option>cab</option>
<option>cba</option>
...
</select>
Run Code Online (Sandbox Code Playgroud)
我想基于选择下拉列表过滤此列表:
<select>
<option value="a">Filter by a</option>
<option value="b">Filter by b</option>
<option value="c">Filter by c</option>
</select>
Run Code Online (Sandbox Code Playgroud) 我有以下SP
CREATE PROCEDURE GetAllHouses
set @webRegionID = 2
set @sortBy = 'case_no'
set @sortDirection = 'ASC'
AS
BEGIN
Select
tbl_houses.*
from tbl_houses
where
postal in (select zipcode from crm_zipcodes where web_region_id = @webRegionID)
ORDER BY
CASE UPPER(@sortBy)
when 'CASE_NO' then case_no
when 'AREA' then area
when 'FURNISHED' then furnished
when 'TYPE' then [type]
when 'SQUAREFEETS' then squarefeets
when 'BEDROOMS' then bedrooms
when 'LIVINGROOMS' then livingrooms
when 'BATHROOMS' then bathrooms
when 'LEASE_FROM' then lease_from
when 'RENT' then rent
else case_no
END …Run Code Online (Sandbox Code Playgroud)