Javascript 通过特殊字符从字符串中查找并提取序列

Javascript 通过特殊字符从字符串中查找并提取序列,javascript,Javascript,我有一个文本中包含电话号码的字符串。此电话号码由特殊字符包装 示例: 这个特殊的字符是' “12345”世界你好 你好,世界12345 “12345”你好,世界 我想处理字符串和一个具有两个属性的对象,电话号码和消息文本 示例结果是 { phonenumber: "12345", announcement: "Hello World" } 我试图为这个问题创建一个解决方案 常量标识字符='; const exampleText=你好“12345”世界; const phoneIn

我有一个文本中包含电话号码的字符串。此电话号码由特殊字符包装

示例: 这个特殊的字符是'

“12345”世界你好

你好,世界12345

“12345”你好,世界

我想处理字符串和一个具有两个属性的对象,电话号码和消息文本

示例结果是

{
   phonenumber: "12345",
   announcement: "Hello World"
}
我试图为这个问题创建一个解决方案

常量标识字符='; const exampleText=你好“12345”世界; const phoneInfo=检查示例文本; console.logphoneInfo; 函数检查文本{ const firstIndex=text.indexOfidentificationCharacter; const secondIndex=text.lastIndexOfidentificationCharacter+1; const phoneString=text.substringfirstIndex,secondIndex; const phoneNumber=phoneString.substring1,phoneString.length-1; const announcement=text.replacephoneString; 返回{ 电话号码, 公告 }
} 您可以使用正则表达式,将左侧和右侧部分作为公告,中间部分作为电话号码

console.log[Hello'12345'World,'Hello World'12345','12345'Hello World].maps=>{ var[,左,电话号码,右]=s.match/^..*.+.*$/.maps=>s.trim; 返回{phonenumber,公告:left+''+right.trim}; };
.as console wrapper{max height:100%!important;top:0;}您可以使用正则表达式,将左右部分作为公告,中间部分作为电话号码

console.log[Hello'12345'World,'Hello World'12345','12345'Hello World].maps=>{ var[,左,电话号码,右]=s.match/^..*.+.*$/.maps=>s.trim; 返回{phonenumber,公告:left+''+right.trim}; };
.as控制台包装{max height:100%!important;top:0;}一种方法是使用replace和map

让str=`Hello'12345'世界 你好,世界12345 “12345”你好,世界` 让op=[] 让rep=str.replace/'\d+'/gm,functionmatch,g1{ 作品1 回来 } 让final=rep.split'\n'.mape,index=>{ 帐号:op[索引], 户名:e.trim }
console.logfinal一种方法是使用replace和map

让str=`Hello'12345'世界 你好,世界12345 “12345”你好,世界` 让op=[] 让rep=str.replace/'\d+'/gm,functionmatch,g1{ 作品1 回来 } 让final=rep.split'\n'.mape,index=>{ 帐号:op[索引], 户名:e.trim }
logfinal尝试使用正则表达式:可能您可以在匹配后修剪组值,但该方法有效

变量regex=/.*.'*.'*/ var input0=你好“12345”世界 var result0=input0.replaceregex,{phonenumber:\$2\,公告:\$1$3\} console.logresult0 var input1=你好世界“12345” var result1=input1.replaceregex,{phonenumber:\$2\,公告:\$1$3\} console.logresult1 var input2='12345'你好世界 var result2=input2.replaceregex,{phonenumber:\$2\,公告:\$1$3\}
logresult2尝试使用正则表达式:可能您可以在匹配后修剪组值,但该方法有效

变量regex=/.*.'*.'*/ var input0=你好“12345”世界 var result0=input0.replaceregex,{phonenumber:\$2\,公告:\$1$3\} console.logresult0 var input1=你好世界“12345” var result1=input1.replaceregex,{phonenumber:\$2\,公告:\$1$3\} console.logresult1 var input2='12345'你好世界 var result2=input2.replaceregex,{phonenumber:\$2\,公告:\$1$3\} console.logresult2您也可以按“”拆分,然后将最后一部分和第一部分相加:

 const [first, phoneNumber, last] = exampleText.split("'").map(it => it.trim());
 return {
   phoneNumber,
   anouncement: first + " " + last,
 };
您也可以。按“”拆分,然后将最后一部分和第一部分相加:

 const [first, phoneNumber, last] = exampleText.split("'").map(it => it.trim());
 return {
   phoneNumber,
   anouncement: first + " " + last,
 };

回应一条评论,我试图概括我先前的回答:

函数convertinput,分隔符={ var regex=new RegExp`.[${separator}].[${separator}]*` return input.replaceregex,{phonenumber:\$2\,公告:\$1$3\} } console.logconvertHello“12345”世界
console.logconvertHello+12345+World,“+”回应一条评论,我尝试概括我之前的答案:

函数convertinput,分隔符={ var regex=new RegExp`.[${separator}].[${separator}]*` return input.replaceregex,{phonenumber:\$2\,公告:\$1$3\} } console.logconvertHello“12345”世界
console.logconvertHello+12345+World,“+”我实际上认为这是一个很好的解决方案:忽略下面的正则表达式hack,它们可能较短,但绝对不易维护…@jonaswillms最后一个明智的评论:-我实际上认为这是一个很好的解决方案:忽略下面的正则表达式hack,它们可能较短,但显然不易维护…@Jonaswillms最后给出了一个明智的评论:-我试图将标识字符从“改为+”,但这不再有效:这是因为+在正则表达式中是一个特殊字符:如果你想将其用作+字符,你应该在正则表达式中引用它:[+]是+字符,+指上一个ch
一个或多个字符。。。您可以尝试使用var regex=/.*[+].[+].*/I添加了一个新的、更通用的答案,提供了一种自定义所需分隔符的方法,并以适当的方式使用它。。。我希望这能帮助你!我试图将标识字符从“改为+”,但这不再起作用:这是因为+在正则表达式中是一个特殊字符:如果你想将它用作+字符,你应该在正则表达式中引用它:[+]是+字符,+意味着前一个字符多次。。。您可以尝试使用var regex=/.*[+].[+].*/I添加了一个新的、更通用的答案,提供了一种自定义所需分隔符的方法,并以适当的方式使用它。。。我希望这能帮助你!是否可以使用类似于{phonenumber:\$separation\,announcement:\除separation之外的所有内容\}的内容,因为字符串中可能有3个以上的部分?是否可以使用类似于{phonenumber:\$separation\,announcement:\除separation之外的所有内容\}的内容,因为字符串中可能有3个以上的部分