【问题标题】:How to return part of string before a certain character?如何在某个字符之前返回部分字符串?
【发布时间】:2013-05-04 10:06:24
【问题描述】:

如果你从questionjsfiddle

var str = "Abc: Lorem ipsum sit amet";
str = str.substring(str.indexOf(":") + 1);

这将返回: 之后的所有字符,如何调整它以返回: 之前的所有字符

类似的东西 var str_sub = str.substr(str.lastIndexOf(":")+1); 但这不起作用。

【问题讨论】:

  • 它已经返回 : 之后的所有字符
  • @Smudger:在链接的小提琴中,您使用的是str = str.substring(str.indexOf(":") + 1);,这似乎有效,警报确实显示Lorem ipsum sit amet。这不是你想要的吗?
  • 对不起,我之前和之后都搞砸了......所以我想显示Abc而不是Lorem ipsum sit amet。谢谢。
  • 我正在寻找“:”之后的内容,你的代码帮助了我

标签: javascript substring


【解决方案1】:

你小提琴已经完成了这项工作......也许你尝试在双冒号之前获得字符串? (你真的应该编辑你的问题)然后代码会是这样的:

str.substring(0, str.indexOf(":"));

其中 'str' 表示包含字符串的变量。

Click here for JSFiddle Example

Javascript

var input_string = document.getElementById('my-input').innerText;
var output_element = document.getElementById('my-output');

var left_text = input_string.substring(0, input_string.indexOf(":"));

output_element.innerText = left_text;

HTML

<p>
  <h5>Input:</h5>
  <strong id="my-input">Left Text:Right Text</strong>
  <h5>Output:</h5>
  <strong id="my-output">XXX</strong>
</p>

CSS

body { font-family: Calibri, sans-serif; color:#555; }
h5 { margin-bottom: 0.8em; }
strong {
  width:90%;
  padding: 0.5em 1em;
  background-color: cyan;
}
#my-output { background-color: gold; }

【讨论】:

  • @stonyau 我负责。你能解释一下你是怎么得出这个观点的吗?
  • 我认为你应该避免在你的答案中包含一堆不相关的 css 和 html
  • @geg 如果您阅读第一条评论,您会发现有人不理解如何使用代码,因此我增强了答案以使其尽可能清晰。 Stackoverflow 规则说我必须在此处包含代码,即使它是外部小提琴。不管前几行给了你所有你需要知道的东西,所以你可以简单地忽略其余的。
  • @Hexodus 你的变量命名right_text 可能会让人感到困惑,因为你真的得到了“左文本”,不是吗...?
  • @webeno 你说得对,这真是令人困惑,所以我根据你的建议更新了我的答案。感谢您指出;)
【解决方案2】:

另一种方法是用“:”分割字符串,然后从末尾弹出。 var newString = string.split(":").pop();

【讨论】:

  • 对我来说很完美,删除了第一部分。
  • 这是我最喜欢的解决方案,因为如果你的标识符是一串字符,它就可以完美地工作。 Substr 还必须考虑标识符的长度。
  • 这是正确的答案,不是上面的方法,获取字符串中冒号字符后的所有内容。
【解决方案3】:

注意 subString 的第一个参数是从 0 开始的,而第二个是从 1 开始的。

例子:

String str= "0123456";
String sbstr= str.substring(0,5);

输出将是 sbstr= 01234 而不是 sbstr = 012345

【讨论】:

    【解决方案4】:

    一般来说,子字符串后返回字符串的函数是

    function getStringAfterSubstring(parentString, substring) {
        return parentString.substring(parentString.indexOf(substring) + substring.length)
    }
    
    function getStringBeforeSubstring(parentString, substring) {
        return parentString.substring(0, parentString.indexOf(substring))
    }
    console.log(getStringAfterSubstring('abcxyz123uvw', '123'))
    console.log(getStringBeforeSubstring('abcxyz123uvw', '123'))

    【讨论】:

      【解决方案5】:

      substring() 方法返回字符串的开始和结束索引之间的部分,或者到字符串的结尾。

      // substring(indexStart, indexEnd); // syntax
      // in your case
      str = str.substring(0, str.indexOf(":"));
      

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-28
      • 1970-01-01
      • 2018-08-21
      • 1970-01-01
      • 2018-11-16
      • 2016-08-24
      • 1970-01-01
      • 2020-11-23
      相关资源
      最近更新 更多