如何在特定字符之前返回字符串的一部分?

44

如果你查看这个jsfiddle例子,来自于这个问题

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

如何调整此代码以返回 : 之前的所有字符?

类似这样:var str_sub = str.substr(0, str.lastIndexOf(":")); 但是这个方法不起作用。


4
它已经返回了冒号后面的所有字符。 - nathan hayfield
@Smudger:在您的链接fiddle中,您使用了str = str.substring(str.indexOf(":") + 1);,这似乎是有效的,警报确实显示了“Lorem ipsum sit amet”。这不是您想要的吗? - Nope
对不起,我之前的顺序弄反了... 所以我想要显示 Abc 而不是 Lorem ipsum sit amet。谢谢。 - Smudger
1
我在寻找“:”后面的内容,你的代码帮了我大忙。 - Ananda
5个回答

78
你的代码已经能够胜任这个任务了……也许你应该尝试在双冒号之前获取字符串?(你真的应该编辑你的问题)那么代码应该像这样:

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

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

点击此处查看JSFiddle示例

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; }

1
@stonyau,我来做这个工作。您能否解释一下您是如何得出这个观点的呢? - Hexodus
5
我认为你应该避免在回答中包含大量无关的 CSS 和 HTML。 - geg
1
如果你读了第一条评论,你会发现有人不理解如何使用代码,所以我改进了答案,使其尽可能清晰。Stackoverflow规则要求我在这里包含代码,即使它是一个外部的fiddle。无论如何,前几行给出了你需要知道的所有内容,所以你可以简单地忽略其余部分。 - Hexodus
1
@Hexodus,你的变量命名right_text可能会让人困惑,因为你实际上得到的是“左文本”,不是吗...? - benomatis
1
@Webeno 你说得对,这个问题真是让人困惑,所以我根据你的建议更新了我的回答。感谢你指出来;) - Hexodus

41

另一种方法是通过 ":" 将字符串拆分,然后弹出末尾。

var newString = string.split(":").pop();

完美的对我来说,移除第一部分。 - insign
这是我最喜欢的解决方案,因为如果你的标识符是字符串,它可以完美地工作。Substr 还需要考虑标识符的长度。 - Brad
这是正确的答案,不是上面的方法,在一个字符串中获取冒号字符后的所有内容。 - BuffMcBigHuge

6

请注意 subString 方法的第一个参数是基于 0 的,而第二个参数是基于 1 的。

示例:

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

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


6

一般而言,返回子字符串后的字符串的函数为

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'))


-1

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

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

这是与被接受的答案相同的解决方案。 - Eric Aya

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接