2016-06-20 13 views
1

私はfreecodecamp https://www.freecodecamp.com/challenges/truncate-a-stringからこのコーディングの課題に取り組んでいます。この私のコードを完了するために、Javascriptで文字列を切り捨てる(制約付き)

は、以下の3つの条件を満たしている必要があります:それは長い与えられた文字列の最大長(第二引数)を超える場合

  1. は、文字列(最初の引数)を切り捨てます。終了した文字列を返します。

  2. 最後に挿入された3つのドットも文字列の長さに加算する必要があります。

  3. ただし、指定された最大文字列長が3以下の場合、3つのドットの加算は、切り捨て文字列を決定する際に文字列長に加算されません。

私は最初の2つの条件を満たすことができるんだけど、私は、文字列の長さが3以下であるテストケースを与えたときに、いくつかの理由のために私のコードがエラーをスローします...

例: truncateString( "絶対に長い" は、2) "AB ..." を返すべきではなく、 "絶対にLongeを..."

助けてください返します。私のコードはhttps://gist.github.com/adityatejas/7857c0866f67783e71a1c9d60d3beed8です。

function truncateString(str, num) 
{ 
    var truncatedStr = ''; 
    if (str.length > num) 
    { 
    truncatedStr = str.slice(0, num-3) + "..."; 
    return truncatedStr;  
    } 
    else if (num <= 3) 
    { 
    truncatedStr = str.slice(0, num) + "..."; 
    return truncatedStr; 
    } 
    else return str; 
} 

truncateString("Adi", 1);

+2

1)郵便番号を使用*特定questioを与えることができます私たちはあなたの仕事をしません。いったん特定の質問があれば、喜んで助けてくれるでしょう。3)「エラー」とは何ですか? – Li357

+0

コードが3より小さい場合、点を追加します。 – epascarello

+0

Ok @AndrewLが私のエラーメッセージと私のコードを私の元の質問に編集しました。あなたの提案をありがとう。 –

答えて

0

次の2つのパラメータ、あなたの選択と最大の長さの文字列に取る関数を作成したいです。条件に基づいて、3つのシナリオが必要です。

  1. 与えられた文字列が最大値を超えて最大値よりも小さいか、この場合には3に等しく、省略記号は、文字列の最後に追加されません。最初の文字(位置0)の文字列のスライスをmaxより小さい3まで取り、省略記号を追加します。

  2. 与えられた文字列が最大値を超え、最大値が3より大きい場合、本質的に文字列が長くなります。最初のインデックスから文字列の長さに移動し、その上に楕円を追加するようにスライスパラメータを更新します。

  3. それ以外の場合は、文字列を最大長を超えないようにそのまま返します。

var truncatedString = document.getElementById("truncated-string"); 
 

 
function truncateString(myString, strLength) { 
 
    if (myString.length > strLength) { 
 
     if (strLength <= 3) { 
 
      return myString.slice(0, strLength - 3) + "..."; 
 
     } 
 
     else { 
 
      return myString.slice(0, strLength) + "..."; 
 
     } 
 
    } 
 
    else { 
 
     return myString; 
 
    } 
 
    
 
} 
 

 
var userInput = prompt("Please enter a string"); 
 
var lengthLimit = prompt("Enter a maximum length"); 
 

 
truncatedString.innerHTML = truncateString(userInput, lengthLimit);
<p id="truncated-string"></p>

+0

Thanks @Richard。これは私が試みたのと同じ論理です。あなたが私がどこにいなくなったかを知るのに役立つほど親切になりますか?私のコードとあなたのコードを比較してもまだそれを見つけることができません... –

0

あなたが)ここ2をconditional (ternary) operator?:String#slice

function truncateString(str, num) { 
 
    return str.length > num ? 
 
     str.slice(0, num > 3 ? num - 3 : num) + "..." : 
 
     str; 
 
} 
 

 
console.log(truncateString("Abcdefghijk", 5)); 
 
console.log(truncateString("A-", 1)); 
 
console.log(truncateString("Alpha", 5)); 
 
console.log(truncateString("Beta", 5)); 
 
console.log(truncateString("Epsilon", 3));

+0

ありがとう@Nina。エレガントなコードの提案。あなたは私の学習のためだけに欠けていたものを特定するのを助けてもいいですか(ちょうどコーディングを始めています)? –

関連する問題