杰表技术论坛 's Archiver

admin 发表于 2011-10-28 11:09

用javascript 作大小写转换替换

这两天用hibernate 的 code generate 工具,生成 hbm.xml, 需要从大写的数据库字段变成小写的javabean属性,需要手工处理,而用eclipse,无法做到使用正则表达式,进行大小写替换。然后,想用 editplus,ultraedit,np++,也都没有这种功能。今天,索兴自己用javascript扩展了一个能够大小写替换的小工具,现在公布出来,与有类似需求的朋友共享。

其思想是: 在原来的 $1,$2... 符号前加修饰符 > 或 < ,分别表示先将替换字符转为大写,或小写,再进行替换,如下所示:
被替换字串:text_area advance_replace
查找字串:_(\w)
替换字串:>$1
结果:textArea advanceReplace

工具可以在线试用:  [url]http://www.jatools.com/replaceex.htm[/url]

admin 发表于 2011-10-28 11:11

本工具的代码,有兴趣的朋友,也可以参考一下:[code]<script type="text/javascript">
var $ = document.getElementById;
function process() {
        var replaced = $('replacedtext').value;
        var m = '';
        if ($('casesensitive').checked) m += 'i';
        if ($('global').checked) m += 'g';
        var searched = new RegExp($('searchedtext').value, m);
        var withed = $('withtext').value;
        L = String.fromCharCode(2),
        U = String.fromCharCode(3); // 将 被替换中的 '\<' 和 '\>' 转为两特殊的控制字符, chr(2) ,chr(3)
        withed = withed.replace('\\<', L).replace('\\>', U);
        var result = replaced.replace(searched,
        function() {
                // [找到的所有内容,找到的第一个括号,第二个括号,。。。 本次匹配在被搜字串中的位置,整个被搜字串]
                // 所以,argments.length = 找到的括号个数 + 3;
                var args = arguments;
                return withed.replace(/[<>]?[$](\d)/g,
                function($0, $1) {
                        var w = args[$1 - 0]; // 被哪个括号选中?
                        if ($0[0] == '<') {
                                return w.toLowerCase();
                        } else if ($0[0] == '>') return w.toUpperCase();
                        else return w;
                })
        });
              // 将特殊字符恢复回来
        result = result.replace(L, '<').replace(U, '>');
        $('replacedtext').value = result;
}
</script>[/code]

admin 发表于 2011-10-28 11:41

示例介绍:将被替换生成的 hbm(还没有property属性)
[code]        <table name="TBUSERS">
                <column name="USR_ID"></column>
                <column name="USR_NAME"></column>
                <column name="USR_LOGIN_NAME"></column>
                <column name="USR_LOGIN_PW"></column>
                <column name="USR_TYPE"></column>
                <column name="USR_DPT_ID"></column>
                <column name="USR_POSITION"></column>
                <column name="USR_AGE"></column>
                <column name="USR_SEX"></column>
                <column name="USR_EMAIL"></column>
                <column name="USR_PHOTO"></column>
                <column name="USR_TEL"></column>
                <column name="USR_MOBILE"></column>
                <column name="USR_ADDRESS"></column>
                <column name="USR_STATE"></column>
                <column name="USR_MODIFY"></column>
                <column name="USR_CREATE_DATE"></column>
                <column name="USR_CREATE_USER"></column>
                <column name="USR_FLAG"></column>
                <column name="USR_ROLES"></column>
        </table>[/code]
增加property属性,使用以下设置进行替换:
查找字串:_(\w*)
替换字串:_$1" property="<$1

[code]
<table name="TBUSERS">
  <column name="USR_ID" property="id"></column>
  <column name="USR_NAME" property="name"></column>
  <column name="USR_LOGIN_NAME" property="login_name"></column>
  <column name="USR_LOGIN_PW" property="login_pw"></column>
  <column name="USR_TYPE" property="type"></column>
  <column name="USR_DPT_ID" property="dpt_id"></column>
  <column name="USR_POSITION" property="position"></column>
  <column name="USR_AGE" property="age"></column>
  <column name="USR_SEX" property="sex"></column>
  <column name="USR_EMAIL" property="email"></column>
  <column name="USR_PHOTO" property="photo"></column>
  <column name="USR_TEL" property="tel"></column>
  <column name="USR_MOBILE" property="mobile"></column>
  <column name="USR_ADDRESS" property="address"></column>
  <column name="USR_STATE" property="state"></column>
  <column name="USR_MODIFY" property="modify"></column>
  <column name="USR_CREATE_DATE" property="create_date"></column>
  <column name="USR_CREATE_USER" property="create_user"></column>
  <column name="USR_FLAG" property="flag"></column>
  <column name="USR_ROLES" property="roles"></column>
</table>

[/code]
接着,产生驼峰效果替换:
查找字串:_([a-z])
替换字串:>$1
大小写敏感
效果如下:
[code]
<table name="TBUSERS">
  <column name="USR_ID" property="id"></column>
  <column name="USR_NAME" property="name"></column>
  <column name="USR_LOGIN_NAME" property="loginName"></column>
  <column name="USR_LOGIN_PW" property="loginPw"></column>
  <column name="USR_TYPE" property="type"></column>
  <column name="USR_DPT_ID" property="dptId"></column>
  <column name="USR_POSITION" property="position"></column>
  <column name="USR_AGE" property="age"></column>
  <column name="USR_SEX" property="sex"></column>
  <column name="USR_EMAIL" property="email"></column>
  <column name="USR_PHOTO" property="photo"></column>
  <column name="USR_TEL" property="tel"></column>
  <column name="USR_MOBILE" property="mobile"></column>
  <column name="USR_ADDRESS" property="address"></column>
  <column name="USR_STATE" property="state"></column>
  <column name="USR_MODIFY" property="modify"></column>
  <column name="USR_CREATE_DATE" property="createDate"></column>
  <column name="USR_CREATE_USER" property="createUser"></column>
  <column name="USR_FLAG" property="flag"></column>
  <column name="USR_ROLES" property="roles"></column>
</table>
[/code]

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.