繁体   English   中英

使用Java脚本提取部分简单字符串

[英]Extracting a part of simple string using Javascript

假设我有以下字符串(每行都是一个单独的字符串):

EducationLink
BioLink
InterestsLink

我想使用Javascript提取不属于“链接”的部分。 我该怎么做? 预期结果是

Education
Bio
Interests

我尝试过一个正则表达式,但是对它们的经验不是很丰富,但是失败了:

/^ (^Link) $/

使用诸如slice()和substr()之类的字符串函数,我只在所选文本的右侧获取了值,而不是所需的左侧。

谢谢你的帮助。

text = input.replace(/Link(\n|$)/g,"\n");

您可以使用.replace()

'EducationLink'.replace('Link', ''); //returns Education

https://developer.mozilla.org/zh-CN/JavaScript/Reference/Global_Objects/String/replace

问题是您可以使用正则表达式进行替换,但是由于情况如此简单(除非有更多情况),您为什么会使事情过于复杂?

您需要将Link放在RegEx的末尾,例如:

^([A-Z]+)Link$

这符合:

  • A和Z之间的一个或多个字符
  • 然后单词Link
  • 然后字符串的结尾

括号中的部分将作为一组返回。

此外,如果只需删除后缀Link ,则可以在Javascript中使用replace()方法:

var x = myStr.replace('Link', '');

一种方法是使用String.split() MDN

var txt = 'EducationLink'.split('Link')[0]; // txt == 'Education'

尝试这个:

<script>

var str = "EducationLink";
index = str.search(/link/i);
str = str.substr(0,index);

</script> 

正如其他人指出的那样,如果所有字符串都以“ Link”结尾,则只需使用替换即可。 否则,这些方法中的任何一种都可以正常工作:

var i = 0;
var strings = [
    'EducationLink',
    'BioLink',
    'InterestsLink'
];
var s = '';
var r = /^(.+)Link$/
for (i = 0; i < strings.length; i += 1) {
    s = strings[i];
    //s = s.substring(0, s.indexOf('Link')); //Uncomment for substring
    //s = s.match(r)[1]; //Uncomment for regex
    s = s.replace('Link', '');
    strings[i] = s;
}
console.log(strings);

复制并粘贴到浏览器控制台窗口中以运行。

要在对另一个答案的评论中回答您的问题(“但是,我的RegEx为什么不起作用?”),您的RegEx会执行以下操作:

/^ (^Link) $/
//Each regex term on own line, commented below
^   //start of string
    //Literal space
(^Link) //Capturing group, string starting with 'Link'.
    //Literal space
$   //end of string

尽管在正则表达式中可以有两个“字符串开头”标识符,但永远只有一个“字符串开头”。 ^字符只是字符类中的否定词,该字符类括在方括号中,而不是弯曲的。 如果要捕获文字插入符( ^ ),请在其前面加一个反斜杠( \\^ )。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM