Convert HTML Entities

What is "HTML Entities" ?

  在 HTML 中,某些字符是預留的,像其他程式語言的保留字(英語:Reserved word),有時也叫關鍵字(keyword),是程式語言中的一類語法結構。在特定的程式語言里,這些保留字具有較為特殊的意義,並且在語言的格式說明里被預先定義,ex:javascript中的var, function。
  more detail about "Reserved word"  
  more detail about HTML Entities
  HTML Entities Collection here
  在 HTML 中不能使用小於號(<)和大於號(>),這是因為瀏覽器會誤認為它們是標簽。 如果希望正確地顯示預留字符,我們必須在 HTML 源代碼中使用字符實體(character entities)
  function convert(str) {
  // &colon;&rpar;
  var htmlentities  = {
    '&':'&amp;',
    '<':'&lt;',
    '>':'&gt;',
    '"':'&quot;',
    '\'':'&apos;'
  };
  return str.split('').map(function(element)
         {
                return (htmlentities[element] !== undefined) ? htmlentities[element] : element;
          }).join('');
}
convert("Dolce & Gabbana");

Solution 1:

  這題我一開始的想法是用split先把字串先拆解成array,然後再用map()去訪問array中的每個元素,然後利用Object的property的key⇒value對應性質,如果對應不為undefined則轉換成對應的正確字元符號(character entities),如果找不到對應值,則返回原本的字元符號,最後再透過join()來將array的每個元素串接在一起並return

function convert(str) {
  // &colon;&rpar;
  var htmlentities  = {
    '&':'&amp;',
    '<':'&lt;',
    '>':'&gt;',
    '"':'&quot;',
    '\'':'&apos;'
  };
  var regex = /[&<>"']+/;
  return str.split('').map(function(element)
         {
                return (regex.test(element) === true) ? htmlentities[element] : element;
          }).join('');
}
convert("Dolce & Gabbana");
convert("<>");

Solution 2:

  這題給的提示是用Regular Expression ( 正規表示式/正則表示式 ) 來檢查字串中是否出現關鍵字,因為test()如果找到關鍵字則會返回true;否則返回false,然後再依據符號對應來轉換,並將值返回,而在這裡的匹配模式沒有使用全域匹配 ( global-/expression/g ) 來多次檢測該字串,因為每個array中的單位部分只有一個字元,所以不使用全域匹配



P.S. / Reference:  Regular Expression
          HTML Entities Collection
          HTML Entities   

results matching ""

    No results matching ""