web-dev-qa-db-ja.com

特定の文字の前の文字列の一部を返す方法は?

jsfiddle from question を見ると、

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

これは_:_の後のすべての文字を返します。これを調整して_:_の前のすべての文字を返すにはどうすればよいですか

var str_sub = str.substr(str.lastIndexOf(":")+1);のようなものですが、これは機能しません。

34
Smudger

あなたはすでに仕事をしています...多分あなたは文字列before二重コロンを取得しようとしていますか? (あなたは本当にあなたの質問を編集する必要があります)その後、コードは次のようになります:

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

別の方法としては、「:」で文字列を分割し、最後からポップする方法があります。 var newString = string.split(":").pop();

27
A. James McHale

また、subStringの最初の引数は0ベースであり、2番目の引数は1ベースであることに注意してください。

例:

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

出力はsbstr= 01234およびsbstr = 012345

4
swapnil_nerd

一般に、部分文字列の後に文字列を返す関数は

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
best wishes