当前位置: 澳门新濠3559 > 服务器运维 > 正文

接下来的参数是与模式中的子表达式匹配的字符

时间:2019-11-29 04:05来源:服务器运维
复制代码 代码如下:$.click{ var str="";$("[name='checkbox'][checked]").each{ str+=$ $ $' + " 好像一般使用第二种 现在把gsub挂到String的原型上面 "); */ //$.delay; //tv.attr; clean value // get textarea value var av =

复制代码 代码如下:$.click{ var str=""; $("[name='checkbox'][checked]").each{ str+=$ $

$' + "

好像一般使用第二种

现在把gsub挂到String的原型上面

"); */ //$.delay; //tv.attr; clean value // get textarea value var av = $; $; /* $.append("You can get the value of textarea use these methods below:
" + "" + av + "" + "
" + '

12.如何将字符串内每两个字符中间插入一个字符
使用sed
代码如下:
echo $test |sed 's/../&[insert char]/g'

这里有个问题就是,%s都是一样的,替换出来都是一样的,而且我们只能按照顺序来判断被替换的是哪一部分,如果添加一段,那么后面所有的都得变。所以我们得传个变量进去。

"); */ //$.delay; var str = ""; /* $.change { $("select option:selected").each { str += $; $; }) .trigger; */ // $("select[name='garden']接下来的参数是与模式中的子表达式匹配的字符串澳门新濠3559。 option:selected") if we have multiple select $("select[id='mysel'] option:selected").each { str = $; $; var str2 = ""; $("select[id='multisel'] option:selected").each { str2 += $; $.text; var str3 = []; $("input[name='checkme']:checked").each{ str3.push; var oa = ""; $.each(str3, function{ oa += key + ":" + val; }); $; var ck = $("input[type='radio']:checked").val.html( ck + " is checked!" ); return false; }); } form();HTML:复制代码 代码如下:

  1. 查找子串的位置
    代码如下:
    str="abc"
    expr index $str "a" # 1
    expr index $str "b" # 2
    expr index $str "x" # 0
    expr index $str "" # 0

  2. 选取子串
    代码如下:
    str="abcdef"
    expr substr "$str" 1 3 # 从第一个位置开始取3个字符, abc
    expr substr "$str" 2 5 # 从第二个位置开始取5个字符, bcdef
    expr substr "$str" 4 5 # 从第四个位置开始取5个字符, def
    echo ${str:2} # 从第二个位置开始提取字符串, bcdef
    echo ${str:2:3} # 从第二个位置开始提取3个字符, bcd
    echo ${str:(-6):5} # 从倒数第二个位置向左提取字符串, abcde
    echo ${str:(-4):3} # 从倒数第二个位置向左提取6个字符, cde

  3. 截取子串
    代码如下:
    str="abbc,def,ghi,abcjkl"
    echo ${str#ac} # 输出,def,ghi,abcjkl 一个井号(#) 表示从左边截取掉最短的匹配 (这里把abbc字串去掉)
    echo ${str##a
    c} # 输出jkl, 两个井号(##) 表示从左边截取掉最长的匹配 (这里把abbc,def,ghi,abc字串去掉)
    echo ${str#"ac"} # 输出abbc,def,ghi,abcjkl 因为str中没有"ac"子串
    echo ${str##"ac"} # 输出abbc,def,ghi,abcjkl 同理
    echo ${str#
    ac} # 空
    echo ${str##ac} # 空
    echo ${str#d
    f) # 输出abbc,def,ghi,abcjkl,
    echo ${str#df} # 输出,ghi,abcjkl
    echo ${str%al} # abbc,def,ghi 一个百分号(%)表示从右边截取最短的匹配
    echo ${str%%b
    l} # a 两个百分号表示(%%)表示从右边截取最长的匹配
    echo ${str%a*c} # abbc,def,ghi,abcjkl
    可以这样记忆, 井号(#)通常用于表示一个数字,它是放在前面的;百分号(%)卸载数字的后面; 或者这样记忆,在键盘布局中,井号(#)总是位于百分号(%)的左边(即前面)

  4. 字符串替换
    代码如下:
    str="apple, tree, apple tree"
    echo ${str/apple/APPLE} # 替换第一次出现的apple
    echo ${str//apple/APPLE} # 替换所有apple
    echo ${str/#apple/APPLE} # 如果字符串str以apple开头,则用APPLE替换它
    echo ${str/%apple/APPLE} # 如果字符串str以apple结尾,则用APPLE替换它

  5. 比较
    代码如下:
    [[ "a.txt" == a* ]] # 逻辑真 (pattern matching)
    [[ "a.txt" =~ .*.txt ]] # 逻辑真 (regex matching)
    [[ "abc" == "abc" ]] # 逻辑真 (string comparision)
    [[ "11" < "2" ]] # 逻辑真 (string comparision), 按ascii值比较

  6. 连接
    代码如下:
    s1="hello"
    s2="world"
    echo ${s1}${s2} # 当然这样写 $s1$s2 也行,但最好加上大括号
    8.将一批文件中的所有string替换
    代码如下:
    for i in file_list
    do
    vi $i <<-!
    :g/xxxx/s//XXXX/g
    :wq
    !
    done
    9.翻转
    方法一:
    使用rev命令
    方法二:
    编写脚本实现
    澳门新濠3559 ,代码如下:
    #!/usr/bin/awk -f
    ################################################################
    # Description : duplicate rev in awk
    ################################################################
    {
    revline = ""
    for (i=1;i<=length;i++)
    {
    revline = substr(,i,1) revline
    }
    }
    END{print revline}

复制代码 代码如下:

Get All Form Elments Value

得到的结果需要减去1
或者
代码如下:
echo $a |awk -F"x" '{print NF-1}'

第二种解决办法:让使用者自定义一个标志来替换#{}的标志,从而避免冲突。

" + '$' + "
" + '$.find(":input[type='text']").val()' + "
" + '$.find(":input[name='txtname']").val()' + "
" + "

这篇文章主要介绍了Bash Shell字符串操作总结,包含取长度、截取、查找位置、替换等等,需要的朋友可以参考下

显然用对象的方法要靠谱一点。

IE 暂不支持CSS:复制代码 代码如下:

10.匹配
代码如下:
grep
egrep
fgrep
11.得到字符串中某个字符的重复次数
代码如下:
echo $a |tr "x" "n" |wc -l

复制代码 代码如下:

JS:复制代码 代码如下:function form.submit { // get text value var tv = $, tf = $.find(":input[type='text']").val.find(":input[name='txtname']").val.text.append("You can get the value of text use these methods below:
" + "" + tv + "" + "
" + "

  1. 取长度
    代码如下:
    str="abcd"
    expr length $str # 4
    echo ${#str} # 4
    expr "$str" : ".*" # 4

(function(){
var number = 12345678900;
var result = (''+number).replace(/(d)(?=(d{3})+$)/g,'$1,');
console.log(result);
})();

(function(){
var str = 'click dblclick';
var result = str.replace(/b(w+)(s+)(w+)b/,function(all,$1,$2,$3){
return $3+$2+$1;
});
console.log(result);
})();

第一种解决办法:正则里面有转义字符,我们也可以有,所以我们干脆在不需要的替换的部分前面加上''

这有一个很简单的交换两个单词顺序的例子,如果不用repalce可以这么做:

这两个参数都是必须的,replace() 方法的参数 replacement 可以是函数而不是字符串。在这种情况下,每个匹配都调用该函数,它返回的字符串将作为替换文本使用。该函数的第一个参数是匹配模式的字符串。接下来的参数是与模式中的子表达式匹配的字符串,可以有 0 个或多个这样的参数。接下来的参数是一个整数,声明了匹配在 stringObject 中出现的位置。最后一个参数是 stringObject 本身。对于replacement是函数的情况,给我们提供了很大的便利。

我们把'#{what}'换成<%what%>的形式。

复制代码 代码如下:

同时,js并没有那么严格的类型要求,所以,%s这种形式也成为了局限。直接摈弃,换成我们容易理解的形式。

复制代码 代码如下:

(function(){
function gsub(str,replaceObj,regexp){
regexp = regexp || /(?:#{(w+)})/g;
return str.replace(regexp,function(all,$1){
return replaceObj[$1];
})
}
var str = '<%what%> may have gone, but there is a time of <%how%>,#{reserve}';
console.log('gsub结果:',gsub(str,{
what : 'Swallows',
how : 'return'
},/(?:<%(w+)%>)/g))
})();

复制代码 代码如下:

) 方法的参数 replacement 可以是函数而不是字符串。在这种情况下,每个匹配都调用该函数,它返回的字符串将...

嘿嘿,貌似和Prototype中的gsub很像了,不过Prototype中的gsub复杂一些,原理也不一致,熟悉一下,待会再仔细分析Prototype中的gsub方法。

不过现在要扯的是replacement作为函数的用法,所以多此一举的把上面的形式改成函数的形式:

(function(){
var array = ['Swallows','return'];
var i = 0;
var str = '%s may have gone, but there is a time of %s';
var result = str.replace(/(%s)/g,function(){
return array[i++];
})
console.log(result);
})();
(function(){
var str = '#{what} may have gone, but there is a time of #{how}';
var obj = {
what : 'Swallows',
how : 'return'
}
var result = str.replace(/(?:#{(w+)})/g,function(all,$1){
return obj[$1];
})
console.log( result);
})();

再看另一个例子——给数字加上千分位:

上面的gsub借用了Prototype中的gsub方法名字,虽然Prototype中的gsub并不是用的replace,但是形式上还是很像的。

第二种方法:

复制代码 代码如下:

复制代码 代码如下:

复制代码 代码如下:

所以replace无非是捕获匹配的项然后经过处理,作为返回值进行替换,只不过是函数的比较给力。
下面看一个比较实用的例子,大多数语言都有的格式化输出,比如C语言的printf:

上面需要注意的就是''在字符串中也是转义字符,写的时候也需要转义。

(function(){
var str = 'click dblclick';
var result = str.replace(/b(w+)(s+)(w+)b/,'$3$2$1');
console.log(result);
})();

复制代码 代码如下:

(function(){
function gsub(str,replaceObj){
return str.replace(/(?:#{(w+)})/g,function(all,$1){
return replaceObj[$1];
})
}
console.log('gsub结果:',gsub('#{what} may have gone, but there is a time of #{how}',{
what : 'Swallows',
how : 'return'
}))
})();

(function(){
var str = '%s may have gone, but there is a time of %s';
var result = str.replace(/(%s)/g,function(){
return 'replacement';
})
console.log(result);
})()

(function(){
var str = 'click dblclick';
var result = str.split(/b/).reverse().join('')
console.log(result);
})()

复制代码 代码如下:

伪装成函数的样子就是:

(function(){
var number = 12345678900;
var result = (''+number).replace(/(d)(?=(d{3})+$)/g,function(all,$1){
return $1 + ',';
});
console.log(result);
})();

看第一种方法:

String.prototype.gsub = function(replaceObj,regexp){
regexp = regexp || /(^|.)(?:(#{)(w+)(}))/g;
return this.replace(regexp,function(all,$1,$2,$3,$4){
if($1 == '\'){
return $2+$3+$4;
}
return $1 + replaceObj[$3] ;
})
}
var str = '<%what%> may have gone, but there is a time of <%how%>,\<%how%>,#{how}';
var obj = {
what : 'Swallows',
how : 'return'
}
console.log('测试1:',str.gsub(obj,/(^|.)(?:(<%)(w+)(%>))/g));
//Swallows may have gone, but there is a time of return,<%how%>,#{how}
console.log('测试2:',str.gsub(obj));
//<%what%> may have gone, but there is a time of <%how%>,<%how%>,return

(function(){
var str = '#{what} may have gone, but there is a time of #{how},\#{reserve}';
function gsub(str,replaceObj){
return str.replace(/(^|.)(?:#{(w+)})/g,function(all,$1,$2){
if($1 == '\'){
return '#{' + $2 +'}';
}
return $1 + replaceObj[$2];
})
}
console.log('gsub结果:',gsub(str,{
what : 'Swallows',
how : 'return'
}))
})();

这么做略显麻烦,用replace处理则显得清爽许多:

现在面临的一个问题是:

#{what}这种形式的冲突问题,有可能字符串里面刚好就有这种形式的字符串,如果不作处理,后果大家都懂的。

编辑:服务器运维 本文来源:接下来的参数是与模式中的子表达式匹配的字符

关键词: