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