web-dev-qa-db-ja.com

文字列の一部を切り取る

たとえば、文字列があります

"hello is it me you're looking for"

この文字列の一部を切り取り、新しい文字列を返します。

s = string.cut(0,3);

sは次のようになります。

"lo is it me you're looking for"

[〜#〜] edit [〜#〜]:0〜3ではない場合があります。5〜7である可能性があります。

s = string.cut(5,7);

戻ります

"hellos it me you're looking for"
20
dotty

あなたはほとんどそこにいます。あなたが欲しいのは:

http://www.w3schools.com/jsref/jsref_substr.asp

したがって、あなたの例では:

Var string = "hello is it me you're looking for";
s = string.substr(3);

開始(最初の引数)を提供するだけで、そのインデックスから文字列の終わりまでを取得します。

更新、次のようなものはどうですか:

function cut(str, cutStart, cutEnd){
  return str.substr(0,cutStart) + str.substr(cutEnd+1);
}
32
Jake

使用する

サブストリング

関数

あるインデックスと別のインデックスの間、または文字列の末尾までの文字列のサブセットを返します。

substring(indexA, [indexB]);

indexA

An integer between 0 and one less than the length of the string. 

indexB(オプション)0から文字列の長さまでの整数。

substringは、indexAからindexBまでの文字を抽出します。特に:

* If indexA equals indexB, substring returns an empty string.
* If indexB is omitted, substring extracts characters to the end 
  of the string.
* If either argument is less than 0 or is NaN, it is treated as if 
  it were 0.
* If either argument is greater than stringName.length, it is treated as 
  if it were stringName.length.

IndexAがindexBよりも大きい場合、部分文字列の効果は、2つの引数が入れ替わったかのようになります。たとえば、str.substring(1、0)== str.substring(0、1)。

8
rahul
s = string.cut(5,7);

別の関数として実行したいのですが、プロトタイプから文字列で直接呼び出すことができるようにしたい場合:

String.prototype.cut= function(i0, i1) {
    return this.substring(0, i0)+this.substring(i1);
}
4
bobince

string.substring()はあなたが望むものです。

3
Cheeso

他のいくつかの最新の代替手段は次のとおりです。

  1. 分割して参加

    function cutFromString(oldStr, fullStr) {
      return fullStr.split(oldStr).join('');
    }
    cutFromString('there ', 'Hello there world!'); // "Hello world!"
    

    MDNの例 から適応

  2. String.replace() 、正規表現を使用します。これは、大文字と小文字を区別してより柔軟に対応できることを意味します。

    function cutFromString(oldStrRegex, fullStr) {
      return fullStr.replace(oldStrRegex, '');
    }
    cutFromString(/there /i , 'Hello THERE world!'); // "Hello world!"
    
3
filoxo

同様の関数を探している人への参照として、正規表現/文字列区切り文字を使用して文字列を3方向に分割し、文字列の前、区切り文字一致、および後の部分を返すString.prototype.bisect実装があります... 。

/*
      Splits a string 3-ways along delimiter.
      Delimiter can be a regex or a string.
      Returns an array with [before,delimiter,after]
*/
String.prototype.bisect = function( delimiter){
  var i,m,l=1;
  if(typeof delimiter == 'string') i = this.indexOf(delimiter);
  if(delimiter.exec){
     m = this.match(delimiter);
     i = m.index;
     l = m[0].length
  }
  if(!i) i = this.length/2;
  var res=[],temp;
  if(temp = this.substring(0,i)) res.Push(temp);
  if(temp = this.substr(i,l)) res.Push(temp);
  if(temp = this.substring(i+l)) res.Push(temp);
  if(res.length == 3) return res;
  return null;
};

/* though one could achieve similar and more optimal results for above with: */

"my string to split and get the before after splitting on and once".split(/and(.+)/,2) 

// outputs => ["my string to split ", " get the before after splitting on and once"]

ここで述べたように: https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/String/split

Separatorがキャプチャー括弧を含む正規表現である場合、セパレーターが一致するたびに、キャプチャー括弧の結果(未定義の結果を含む)が出力配列にスプライスされます。 ただし、すべてのブラウザがこの機能をサポートしているわけではありません。

1
Quickredfox

次のようなことをする必要があります。

var s = "I am a string";

var sSubstring = s.substring(2); // sSubstring now equals "am a string".

対処方法には2つのオプションがあります。

http://www.quirksmode.org/js/strings.html#substring

http://www.quirksmode.org/js/strings.html#substr

0
kemiller2002

以下を試してください:

var str="hello is it me you're looking for";
document.write(str.substring(3)+"<br />");

確認できます このリンク

0
Himadri