Javascript 仅显示一次字符串中的唯一字符
我有一个重复字母的字符串。我希望重复多次的字母只显示一次。例如,我有一个字符串Javascript 仅显示一次字符串中的唯一字符,javascript,string,character,unique,Javascript,String,Character,Unique,我有一个重复字母的字符串。我希望重复多次的字母只显示一次。例如,我有一个字符串aaabbccc我希望结果是abc。到目前为止,我的函数是这样工作的: 如果字母不重复,就不会显示 如果重复一次,则只显示一次(即aa显示a) 如果重复两次,则显示全部(即aaa显示aaa) 如果重复3次,则显示6(如果aaaa,则显示aaaa) 函数唯一字符(字符串){ var-unique=''; var计数=0; 对于(变量i=0;i
aaabbccc
我希望结果是abc
。到目前为止,我的函数是这样工作的:
- 如果字母不重复,就不会显示
- 如果重复一次,则只显示一次(即aa显示a)
- 如果重复两次,则显示全部(即aaa显示aaa)
- 如果重复3次,则显示6(如果aaaa,则显示aaaa)
函数唯一字符(字符串){
var-unique='';
var计数=0;
对于(变量i=0;i
函数必须在循环中包含循环;这就是为什么的第二个位于第一个的内部。根据实际问题:“如果字母不重复,则不会显示”
函数唯一字符(str)
{
var obj=新对象();
对于(变量i=0;i1)
{
倍数。按(键);
}
}
返回倍数。join(“”);
}
var str=“aaabbbccc”;
编写(唯一字符(str));
您的问题是,每次在字符串中找到该字符时,您都会将其添加到唯一
。实际上,您可能应该这样做(因为您指定的答案必须是嵌套的for循环):
函数唯一字符(字符串){
var str_length=string.length;
var-unique='';
对于(var i=0;i您可以将a与a一起使用:
首先将其转换为数组,然后使用答案,然后重新加入,如下所示:
var nonUnique = "ababdefegg";
var unique = nonUnique.split('').filter(function(item, i, ar){ return ar.indexOf(item) === i; }).join('');
全部在一行中:-)用字符填充集合
,并连接其唯一的条目:
函数makeUnique(str){
返回String.prototype.concat(…新集合(str))
}
console.log(makeUnique('abc'));/“abc”
console.log(makeUnique('abcabc'));/“abc”
使用:
如果重复字符必须显示一次,即。,
对于i/p:AAABBCCC o/p:abc
var str="aaabbbccc";
Array.prototype.map.call(str,
(obj,i)=>{
if(str.indexOf(obj,i+1)==-1 ){
return obj;
}
}
).join("");
//output: "abc"
如果只需要显示唯一字符(字符串轰炸算法),请尝试此操作,添加另一个“And”条件以删除多次出现的字符并仅显示唯一字符,即。,
对于i/p:aabbbkaha o/p:kh
var str="aabbbkaha";
Array.prototype.map.call(str,
(obj,i)=>{
if(str.indexOf(obj,i+1)==-1 && str.lastIndexOf(obj,i-1)==-1){ // another and condition
return obj;
}
}
).join("");
//output: "kh"
唯一字符串=”;
警报(“显示用户输入字符串中特定字符的编号,然后查找唯一字符的编号:”);
函数countChar(testString,lookFor){
var-charCounter=0;
编写(“查看此字符串:
”;
用于(pos=0;pos
”);
返回计数器;
}
函数findNumberOfUniqueChar(testString){
var numChar=0,
uniqueChar=0;
用于(pos=0;pos
我计算了以下“+findNumberOfUniqueChar(testString)+”唯一字符):”;
document.write(“
”+唯一字符串)
这里是最简单的函数
function remove(text)
{
var unique= "";
for(var i = 0; i < text.length; i++)
{
if(unique.indexOf(text.charAt(i)) < 0)
{
unique += text.charAt(i);
}
}
return unique;
}
函数删除(文本)
{
var-unique=“”;
对于(变量i=0;i
可能为时已晚,但仍然是我对这篇文章的回答:
function extractUniqCharacters(str){
var temp = {};
for(var oindex=0;oindex<str.length;oindex++){
temp[str.charAt(oindex)] = 0; //Assign any value
}
return Object.keys(temp).join("");
}
函数提取UniqCharacters(str){
var temp={};
对于(var oindex=0;oindex来说,一行解决方案是使用Set。const chars=[…新的Set(s.split(“”))];
这里是实现第2部分的最简单函数
const showUniqChars = (text) => {
let uniqChars = "";
for (const char of text) {
if (!uniqChars.includes(char))
uniqChars += char;
}
return uniqChars;
};
基于regexp中的@le_m answer的一种较短方法,您可以编写'aaabbccc'。替换(/()\1+/g,“$1”)
唯一字符('abracadabra')的结果应该是什么?结果应该是abrcd@ZlatkoSoleniq:这是怎么回事?它与你的描述不符。顺便问一句,这个用例是什么(或者是家庭作业)?他没有使用C#。它是JavaScript。我的评论仍然有些有效…我没有任何东西可以方便地运行JavaScript。我也不认为我使用了任何真正依赖于语言的东西。大多数情况下,这行代码都会失败:bool foundIt=false;
应该是var foundIt=false;
它与var一起工作,但我有一个问题,我想问什么s(!foundIT)并且可以用不同的方式编写它只是说,如果我们没有在unique
字符串中找到该字符,那么我们需要添加它,因为这是我们第一次遇到这个特殊字符。必须将原型放在字符串函数路径中才能使其工作。非常酷!string.prototype.concat(…新设置(str))
能否请您简要解释一下代码以及为什么这是解决方案?
function remove(text)
{
var unique= "";
for(var i = 0; i < text.length; i++)
{
if(unique.indexOf(text.charAt(i)) < 0)
{
unique += text.charAt(i);
}
}
return unique;
}
function extractUniqCharacters(str){
var temp = {};
for(var oindex=0;oindex<str.length;oindex++){
temp[str.charAt(oindex)] = 0; //Assign any value
}
return Object.keys(temp).join("");
}
const showUniqChars = (text) => {
let uniqChars = "";
for (const char of text) {
if (!uniqChars.includes(char))
uniqChars += char;
}
return uniqChars;
};
const countUnique = (s1, s2) => new Set(s1 + s2).size