- 浏览: 3053339 次
- 性别:
- 来自: 海外
文章分类
- 全部博客 (430)
- Programming Languages (23)
- Compiler (20)
- Virtual Machine (57)
- Garbage Collection (4)
- HotSpot VM (26)
- Mono (2)
- SSCLI Rotor (1)
- Harmony (0)
- DLR (19)
- Ruby (28)
- C# (38)
- F# (3)
- Haskell (0)
- Scheme (1)
- Regular Expression (5)
- Python (4)
- ECMAScript (2)
- JavaScript (18)
- ActionScript (7)
- Squirrel (2)
- C (6)
- C++ (10)
- D (2)
- .NET (13)
- Java (86)
- Scala (1)
- Groovy (3)
- Optimization (6)
- Data Structure and Algorithm (3)
- Books (4)
- WPF (1)
- Game Engines (7)
- 吉里吉里 (12)
- UML (1)
- Reverse Engineering (11)
- NSIS (4)
- Utilities (3)
- Design Patterns (1)
- Visual Studio (9)
- Windows 7 (3)
- x86 Assembler (1)
- Android (2)
- School Assignment / Test (6)
- Anti-virus (1)
- REST (1)
- Profiling (1)
- misc (39)
- NetOA (12)
- rant (6)
- anime (5)
- Links (12)
- CLR (7)
- GC (1)
- OpenJDK (2)
- JVM (4)
- KVM (0)
- Rhino (1)
- LINQ (2)
- JScript (0)
- Nashorn (0)
- Dalvik (1)
- DTrace (0)
- LLVM (0)
- MSIL (0)
最新评论
-
mldxs:
虽然很多还是看不懂,写的很好!
虚拟机随谈(一):解释器,树遍历解释器,基于栈与基于寄存器,大杂烩 -
HanyuKing:
Java的多维数组 -
funnyone:
Java 8的default method与method resolution -
ljs_nogard:
Xamarin workbook - .Net Core 中不 ...
LINQ的恶搞…… -
txm119161336:
allocatestlye1 顺序为 // Fields o ...
最近做的两次Java/JVM分享的概要
刚有个需求是要把URL中query部分的一个指定参数的值替换为新的,如果该参数不存在的话就将新的键值对加到query的末尾。前提是:
1、输入的字符串可能是空的,如果不为空则保证每个参数都是key=value形式的,其中key与等号一定存在;
2、输入的key不会带有奇怪的字符……(就避开了JavaScript的正则表达式没有提供escape功能的麻烦)
想了一下觉得用正则表达式做也短不到哪里去,就先给了一个普通版本:
然后用正则表达式加上逻辑运算表达式再实现了一遍:
(本来要安全的话这里应该对key做一次escape,不过有前提条件保证就不管了)
从代码的字符数量来说果然没短多少……核心替换的逻辑确实是“声明式”了一些,不过不知道多少人是比较喜欢后面这种写法的呢?
在同样的前提条件下要抽取参数的值就简单多了:
这个我就不用非正则表达式的方式去做了。
要是有更好的办法用正则表达式来实现这个功能拜托告诉我哦~~
爽毛 活没干好已经给大家带来困扰了
我要反省……
1、输入的字符串可能是空的,如果不为空则保证每个参数都是key=value形式的,其中key与等号一定存在;
2、输入的key不会带有奇怪的字符……(就避开了JavaScript的正则表达式没有提供escape功能的麻烦)
想了一下觉得用正则表达式做也短不到哪里去,就先给了一个普通版本:
function setQueryParamValue(queryString, key, newValue) { var newParam = key + '=' + newValue; if (!queryString) return newParam; var replaced = false; var params = queryString.split('&'); for (var i = 0; i < params.length; i++) { if (params[i].split('=')[0] == key) { params[i] = newParam; replaced = true; } } if (replaced) return params.join('&'); return queryString + '&' + newParam; }
然后用正则表达式加上逻辑运算表达式再实现了一遍:
function setQueryParamValue(queryString, key, newValue) { var replaced = false; var newParam = key + '=' + newValue; var result = queryString.replace(new RegExp('(^|&)' + key + '=(.*?)(?=$|&)', 'g'), function (s, p1, p2) { replaced = true; return p1 + newParam; }); return replaced && result || queryString && (queryString + '&' + newParam) || newParam; }
(本来要安全的话这里应该对key做一次escape,不过有前提条件保证就不管了)
从代码的字符数量来说果然没短多少……核心替换的逻辑确实是“声明式”了一些,不过不知道多少人是比较喜欢后面这种写法的呢?
在同样的前提条件下要抽取参数的值就简单多了:
function getQueryParamValue(queryString, key) { var result = queryString.match(new RegExp('(?:^|&)' + key + '=(.*?)(?=$|&)')); return result && result[1]; }
这个我就不用非正则表达式的方式去做了。
要是有更好的办法用正则表达式来实现这个功能拜托告诉我哦~~
评论
2 楼
RednaxelaFX
2010-04-12
lwwin 写道
有你在的单位真爽~_~
唉,继续看不懂中- -
唉,继续看不懂中- -
爽毛 活没干好已经给大家带来困扰了
我要反省……
1 楼
lwwin
2010-04-12
有你在的单位真爽~_~
唉,继续看不懂中- -
唉,继续看不懂中- -
发表评论
-
Function.prototype.bind
2013-09-24 18:07 0polyfill http://stackoverflow. ... -
Nashorn各种笔记
2013-07-15 17:03 0http://bits.netbeans.org/netbea ... -
JavaScript global properties are bound by name, not by value
2013-06-04 14:42 0function a() { console.log('a1' ... -
PICs and prototypes
2013-05-30 13:10 0In a lot of the implementations ... -
Nashorn notes
2013-05-28 10:44 0Nashorn NodeVisitor: the same a ... -
Building Blocks of a JavaScript Engine
2013-05-23 00:49 0sketches of my new book "B ... -
读《JavaScript语言精髓与编程实践(第二版)》
2013-05-21 00:32 02008年逛书店的时候偶 ... -
V8与c1visualizer
2011-08-21 21:00 0Subject: [v8-dev] Improved c1vi ... -
Rhino的JavaScript与Java的整合
2011-05-05 14:40 0http://www.mozilla.org/rhino/Sc ... -
this = null的杯具
2011-03-09 17:04 0this不允许赋值? FireFox表示吐槽 Chrome却欣 ... -
JägerMonkey的组件介绍
2010-03-16 13:00 0David Mandelin JägerMonkey & ... -
眼见为实——V8的隐藏类与inline cache的例子
2010-03-02 13:42 0src/globals.h // State for inli ... -
JavaScript一些难以优化的地方
2010-03-02 08:54 0arguments with eval -
JägerMonkey与Carakan动态更新
2010-02-28 22:08 3044今天读了几篇与JavaScript引擎相关的帖。三篇关于Moz ... -
Opera的JS引擎,Carakan
2009-12-03 01:47 0Wikipedia 引用Presto is a layout ... -
with的陷阱
2009-11-21 18:41 0让eval()全局作用域执行的方法深入研究 用with(win ... -
虚拟机随谈(一):解释器,树遍历解释器,基于栈与基于寄存器,大杂烩
2009-10-17 02:52 133373(Disclaimer:如果需要转 ... -
再谈Google V8和Webkit Nitro
2009-08-21 18:11 0JavaScriptCore SquirrelFish -&g ... -
把列表里连续的数字合并到连续范围里
2009-06-07 20:46 3388论文写得快疯了嗯。上来换口气。 刚才看到问答频道的一个问题, ... -
在WinXP上构建V8
2008-10-08 17:04 4502事实上非常容易,以至于没啥好写的。根据V8的官方文档就能顺利& ...
相关推荐
在这段代码中,`replaceAll`函数的`regex`参数`"\\\\"`是正则表达式形式的反斜杠,因为每个反斜杠都需要转义,所以写成了两个。`replacement`参数`"/"`表示我们想要替换成的字符。 运行这段代码后,`originalString...
在上述代码中,我们首先编译了URL正则表达式,然后创建一个`Matcher`对象来在输入文本中查找匹配项。一旦找到匹配的URL,我们就用超链接的形式替换它,其中`<a>`标签用于创建超链接,`target='_blank'`属性表示链接...
`:根据编译后的正则表达式创建一个`Matcher`对象,用于与传入的URL字符串进行匹配。 - `if (matcher.find())`:如果匹配成功,则执行下一行代码。 - `return matcher.group();`:返回匹配到的第一个结果。如果...
获取URL中的参数通常涉及到解析查询字符串(即URL中`?`后面的部分)。以下是一种常见的实现方式: ```javascript function getRequestParameter(paramName) { var url = location.href; var paramString = url....
在LoadRunner的脚本编写过程中,我们经常需要处理字符串,尤其是将普通字符串转换为URL编码格式,以确保数据正确无误地发送到服务器。本文将详细介绍如何在LoadRunner中进行URL编码,以及提供的C代码和转换工具。 ...
在本篇文章中,我们将深入探讨如何在MFC(Microsoft Foundation Classes)框架中实现字符串到URL编码(即urlencode格式)的转换。此过程涉及到对字符进行特定格式化处理,以便它们能够在URL中安全传输。 ### MFC...
- **正则表达式`reg`**:用于匹配查询字符串中特定参数的值。 - `(^|&)`: 匹配查询字符串的开头或“&”符号前的位置。 - `name`: 匹配传入的参数名。 - `=([^&]*)`: 匹配“=”号后的参数值,直到下一个“&”出现...
- `replaceAll(String str, String regex, String replacement)`: 使用正则表达式匹配并替换字符串中的模式。 8. **子串操作** - `substringBefore(String str, String separator)`: 获取字符串在指定分隔符前的...
在上面的代码中,`processImageSrc()`是一个假设存在的函数,用于处理或转换捕获到的src值。`match`参数是匹配到的整个img标签,而`capture`参数是捕获组的内容,即img标签的src属性值。函数返回新的字符串,其中...
例如,使用正则表达式匹配URL查询字符串中的“code”参数,并提取其值。这个函数首先构建了一个正则表达式,用来匹配形如“?name=value”的查询参数。如果找到匹配,它将返回URL编码后的参数值,并将其解码。如果URL...
3. **查询和提取**:Voca包含查找子串、替换子串、截取字符串等方法。如`voca.startsWith()`和`voca.endsWith()`检查字符串是否以指定字符或字符串开头或结束,`voca.contains()`检查是否包含特定子串,还有`voca....
【C#优化字符串操作】 1. **Convert.ToInt32 与 Int32.Parse的比较** - `Convert.ToInt32`方法在处理无法转换...在C#开发中,理解这些字符串操作的优化技巧和不同方法的适用场景,有助于编写出更高效、更稳定的代码。
在Web应用中,可以通过`Request.QueryString`从URL的查询字符串中获取参数值: ```csharp string id = Request.QueryString["id"]; ``` 假设URL为`http://example.com/page.aspx?id=123`,则`id`变量的值为`123`。...
2. 解析函数:将URL字符串分解成各个组件,如`GetProtocol()`、`GetHost()`、`GetPort()`、`GetPath()`和`GetQuery()`等。 3. 替换函数:允许用户修改URL的某个特定部分,如`ReplaceProtocol()`, `ReplaceHost()`, `...
最后,重新构建URL字符串,包括协议、主机、端口、路径、查询字符串(由参数对象生成)和哈希部分。注意去除多余的`&`字符,以确保URL的正确格式。 通过这两个函数,我们可以轻松地处理URL中的参数。例如,如果你有...
在IT领域,字符串是编程语言中的基本数据类型之一,它由一个或多个字符...无论是在简单的文本处理还是复杂的文本分析任务中,都能看到字符串的身影。了解并熟练运用字符串相关知识,能够极大地提升编程效率和代码质量。
JDBC连接数据库字符串是连接数据库的关键部分,它包含了所有必要的信息,如驱动类、数据库URL、数据库名、主机地址、端口号以及可能的其他参数。 以下是一些主流数据库的JDBC连接字符串示例: 1. **SQL Server ...
例如,Python 的 `join()` 可以将一个字符列表连接成字符串,`replace()` 用于替换字符串中的特定子串。 6. **源码分析**:压缩包内的源码可能包含各种字符串处理的示例,比如如何根据特定条件分割字符串,如何处理...
在前端开发过程中,经常需要对URL进行操作,比如添加或修改查询字符串参数。这段代码实现了一个简单的JavaScript函数`addpara`,用于向当前页面URL添加或替换指定参数。 #### 函数定义及参数解释 - **函数名**:`...