2011-09-18 15 views
83

Javascriptを使用して、引数として渡された文字列を指定された長さにトリムする関数を引数として渡す方法を教えてください。例:Javascript文字列を長さに合わせて整える

var string = "this is a string"; 
var length = 6; 
var trimmedString = trimFunction(length, string); 

/* trimmedString should be: 
    "this is" */ 

誰でもアイデアがありますか?部分文字列の使用について聞いたことがあるが、あまり理解していない。

+0

「これは」= 7文字ですが、それを意図しましたか? –

+0

質問によると、これを行うために部分文字列を使用する方法があまりにもわかりません。私に例を挙げてください。私が受け入れるのはもちろん、答えがあります;) @Interstellar_Coder oops、typo! –

答えて

192

なぜ部分文字列を使用するだけでは... string.substring(0, 7);最初の引数(0)が開始点です。 2番目の引数(7)は終了点(排他的)です。 More info here.リンクから

var string = "this is a string"; 
var length = 7; 
var trimmedString = string.substring(0, length); 
+0

ありがとう!完璧に動作します。私は期限が過ぎるとすぐに答えとしてマークします! –

+13

そして、最大長を超える文字列の省略記号を指定したい場合(おそらく長い方の場合にはもっと便利です):var string = "これは文字列です"; var length = 20; var trimmedString = string.length> length? string.substring(0、length - 3)+ "...":string.substring(0、length); – Will

+2

string.substr(start、length)は奇妙な動作をすることに注意してください。lengthが文字列の長さ以上の場合は空を返します。 string.substring(start、end)は期待どおりに動作します。つまり、指定された文字数が十分でない場合は、文字列を最後まで返します。 – centic

21

私はそれが有用であることが分かっているため、その答えにWill'sコメントをコピー:

var string = "this is a string"; 
var length = 20; 
var trimmedString = string.length > length ? 
        string.substring(0, length - 3) + "..." : 
        string; 

おかげでしょう。

そしてhttps://jsfiddle.net/t354gw7e/を気遣う人のためjsfiddle :)

+0

elseの場合 'string.substring(0、length)'を使用しても意味がありません。その点で文字列は20文字以下であることが保証されています。 。 –

+0

乾杯、返信を更新しました –

6

なぜ拡張子を使用していませんか?

String.prototype.trim = function (length) { 
    return this.length > length ? this.substring(0, length) + "..." : this; 
} 

など、それを使用します。私たちは、標準オブジェクト.trim()のプロトタイプを上書きしているので

var stringObject= 'this is a verrrryyyyyyyyyyyyyyyyyyyyyyyyyyyyylllooooooooooooonggggggggggggsssssssssssssttttttttttrrrrrrrrriiiiiiiiiiinnnnnnnnnnnnggggggggg'; 
stringObject.trim(25) 

Caution:

。これにより、使用する他のライブラリやツールで予期しない動作が発生することがあります。

+1

どうしてですか?標準オブジェクト '.trim()'のプロトタイプを上書きしているからです。これにより、使用する他のライブラリやツールで予期しない動作が発生することがあります。 –

+0

@OlegBerman確かに、あなたのコメントに注意してください。 – xameeramir