簡體   English   中英

從字符串中提取唯一字符,並在字符串之間保留空格

[英]Extract unique characters from a string with keeping whitespace between strings

如何在字符串中提取唯一字母出現,包括所有空格?

我的代碼的問題是它只返回第一次出現的空格:

function unique_char(str1) {
  var str = str1;
  var uniql = "";
  for (var x = 0; x < str.length; x++) {

    if (uniql.indexOf(str.charAt(x)) == -1) {
      uniql += str[x];

    }
  }
  return uniql;
}
console.log(unique_char("the fox news newspaper"));

這打印到控制台:

foxnwspar

但我想要的輸出是:

狐狸nw par

任何幫助將不勝感激。

謝謝

添加邏輯OR以檢查char是否為空格

if (uniql.indexOf(char) == -1 || char == ' ') 

請參閱下面的工作代碼段:

 function unique_char(str) { var uniql = ""; for (var x = 0; x < str.length; x++) { var char = str.charAt(x); if (uniql.indexOf(char) == -1 || char == ' ') { uniql += str[x]; } } return uniql; } document.write(unique_char("the fox news newspaper")); 

如果你想保留空格,首先檢查它是否是' ' ,否則檢查它是否是唯一的。

 function unique_char(str1) { var str = str1; var uniql = ""; for (var x = 0; x < str.length; x++) { if (str.charAt(x) === ' '){ uniql += str[x]; } else if (uniql.indexOf(str.charAt(x)) == -1) { uniql += str[x]; } } return uniql; } console.log(unique_char("the fox news newspaper")); 

這打印到控制台:

狐狸nw par

為什么不只是刪除空間?

 function unique_char(str1) { var str = str1.replace(/\\s+/g, '');; var uniql = ""; for (var x = 0; x < str.length; x++) { if (uniql.indexOf(str.charAt(x)) == -1) { uniql += str[x]; } } return uniql; } alert(unique_char("the fox news newspaper")); 

我會去使用hashsets,因為它們的查找是O(1),而不是像indexOf()那樣的N. JavaScript有一個很好的對象叫做Set 或者,您可以使用對象,因為它們的鍵本質上是唯一的。

對於真正的問題,只需跳過字符串中的字符即空格(等於' '

function unique_char(str1) {
  var result = {};
  for (var i = 0; i < str1.length; i++) {
    if (str1[i] != ' ') result[str1[i]] = 1;
  }
  return Object.keys(result).join("");
}

console.log(unique_char("the fox news newspaper"));

您可以使用空格字符初始化uniql並在結尾處將其刪除

function unique_char(str1) {
   var str = str1;
   var uniql = " ";
   for (var x = 0; x < str.length; x++) {

     if (uniql.indexOf(str.charAt(x)) == -1) {
     uniql += str[x];

  }
 }
 return uniql[1:];
}
console.log(unique_char("the fox news newspaper"));
if (uniql.indexOf(str.charAt(x)) == -1) {
  uniql += (str[x] !== ' ') ? str[x] : '';
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM