删除JS中字符右侧的文本

时间:2018-01-16 11:04:56

标签: javascript

我正在使用JS从页面标题中删除/替换字符以将slug/url显示为

function convertToSlug(Text){
    return Text
      .toString()
      .trim()
      .toLowerCase()
      .replace(/\s+/g, "-")
      .replace(/[^\w\-]+/g, "")
      .replace(/\-\-+/g, "-")
      .replace(/^-+/, "")
      .replace(/-+$/, "");
  }

这会将This is a page title | Company Name的网页标题转换为this-is-a-page-title-company-name,但如何删除|右侧的所有文字,以便返回的帖子为this-is-a-page-title

请注意,公司名称将会更改,只删除| Company Name的全部内容是不够的。我需要它适用于|右侧的任何标题版本。

3 个答案:

答案 0 :(得分:2)

用空字符串替换管道符号(|)及其后的所有内容:



function convertToSlug(Text){
    return Text
      .replace(/\|.*/, '')
      .trim()
      .toLowerCase()
      .replace(/\s+/g, '-');
  }
  
console.log(convertToSlug('This  is a page    title | Company Name'));




答案 1 :(得分:2)

假设您正在使用| char作为分隔符,您可以使用以下内容:

function convertToSlug(Text){
    return Text
     .split('|')[0]
     .trim()
     .toLowerCase()
     .replace(/\s/g,"-");
  }

答案 2 :(得分:0)

延迟回复,但可能对其他人有用。

<input type="text" id="txtInput" />
<input type="button" onclick="return convertToSlug();" value="Remove text to the right of a character in JS
">
<script>
function convertToSlug(){
    var Text = document.getElementById("txtInput");
    var purgeCharPosition = Text.indexOf("|");
    return Text
      .toString()
      .trim()
      .substr(purgeCharPosition)
      .toLowerCase()
      .replace(/\s+/g, "-")
      .replace(/[^\w\-]+/g, "")
      .replace(/\-\-+/g, "-")
      .replace(/^-+/, "")
      .replace(/-+$/, "");
}
</script>