怎么用js提取字符串中的某一段字符

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么用js提取字符串中的某一段字符相关的知识,希望对你有一定的参考价值。

假设用一段字符串是?id=632573&id=79323?ed=7947
怎么才能将632573这段字符提取出来呢?
我用var b = "?id=632573&id=79323?ed=7947".replace(/^.+?id\=/,'');提取的是632573&id=79323?ed=7947不是632573

String.prototype.getQuery = function(name)

var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)");
var r = this.substr(this.indexOf("\\?")+1).match(reg);
if (r!=null) return unescape(r[2]); return null;

var s = "web1.aspx?status=item&mode=edit";
alert(s.getQuery("status"));
alert(s.getQuery("mode"));

String.prototype.getQuery = function(name)
的意思是为String对象增加一个getQuery(name)方法.
参考技术A var url ='?id=632573?id=79323&ed=7947';
var str = url.substr(1); 
strs = str.split("?");
var theRequest = new Object(); 
theRequest[strs[0].split("=")[0]]=unescape(strs[0].split("=")[1]);
var id = theRequest['id']; //取得ID
alert(id);

 以上仅解决你这个例子的情况,以为大多数情况下URL参数的键名都不是一样的

而且开头一个?中间都是& 所以实际可以一次性获取全部的参数的

//这个是正常的URL注意id和id2键名不一样中间都是&间隔
var url ='?id=632573&id2=79323&ed=7947'; 
var str = url.substr(1); //去掉第一个?
strs = str.split("&");//以&分割
var theRequest = new Object(); 
//取得全部并赋值
for(var i = 0; i < strs.length; i ++)  
  theRequest[strs[i].split("=")[0]]=unescape(strs[i].split("=")[1]); 
 
//输出
var id = theRequest['id']; //取得ID
var id2 = theRequest['id2']; //取得ID2
var ed = theRequest['ed']; //取得ed
alert(id);
alert(id2);
alert(ed);

参考技术B 答案一:"?id=632573&id=79323?ed=7947".replace(/^.*?id=(\\d+).*$/,'$1')
答案二:"?id=632573&id=79323?ed=7947".replace(/^.*?(\\d+).*$/,'$1')
测试通过的~请采纳~不明白的可以继续追问~

参考技术C

看到楼上好多人都写了,我也写了一个,希望能帮到你:

var b = "rwewerwer?id=632573&id=79323?ed=7947".match(/(\\d+)/g)[0];

参考技术D var str = "?id=632573&id=79323?ed=7947";
var s = str.indexOf('=')+1;//第一个=出现的位置
var e = str.indexOf('&');//第一个&出现的位置
var re = str.substring(s,e);//返回的值

如何将excel电子表格中带有多个连字符“-”的中的某一数字用公式提取出来,数据量比较大,一个一个的输入很

如何将excel电子表格中带有多个连字符“-”的中的某一数字用公式提取出来,数据量比较大,一个一个的输入很麻烦,请教各位高手了,谢谢!如下
A1单元格:10-2A-1167-13EONAD-SIN
A2单元格:3-7-1168-1EONAD-OUT
。。。。。。
An单元格
现在我要提取中间的数字1167、1168.。。。。。到B1、B2.。。。。。。Bn单元格

输入以下公式,然后向下填充公式

=--TRIM(MID(SUBSTITUTE(A1,"-",REPT(" ",100)),200,100))

详见附图示例

参考技术A 格式相同就容易解决,而且都是提取4位数
在B1中输入公式,然后下拉填充
=MID(A1,FIND("@",SUBSTITUTE(A1,"-","@",2))+1,4)

如果提取的位数不确定,可以用下面有公式
=MID(A1,FIND("@",SUBSTITUTE(A1,"-","@",2))+1,FIND("@",SUBSTITUTE(A1,"-","@",3))-FIND("@",SUBSTITUTE(A1,"-","@",2))-1)追问

前面的连字符个数是一样多的,但提取的位数可能不同,提取值的前面连字符之间的数字个数也不同

追答

那你使用下面的这个公式就OK了

参考技术B 将A列数据复制到末尾列,对复制的列采用“-”进行分裂,然后讲你需要的数据复制到B列,删除辅助列内容 MEIFEGHDPIG 的回答非常专业,我提供一个业余的方法本回答被提问者采纳 参考技术C 试了一下,MEIFEGHDPIG的方法能实现 参考技术D ……

以上是关于怎么用js提取字符串中的某一段字符的主要内容,如果未能解决你的问题,请参考以下文章

js 正则表达式提取某一段字符

Java怎么使用replace替换字符串中的某一位的字符

如何将excel电子表格中带有多个连字符“-”的中的某一数字用公式提取出来,数据量比较大,一个一个的输入很

如何提取DataTable中的某一列字段的所有数据,进行运算

c语言截取字符串中的一部分

如何提取DataTable中的某一列字段的所有数据,进行运算