извлекать только дублированные слова из строк одной ячейки в листах Google - PullRequest
0 голосов
/ 23 апреля 2020

Я хочу извлечь только дублированные слова из текстовой строки, которая находится в одной ячейке.

текстовая строка - это собака, кошка, кошка, крыса, лошадь, лошадь, корова, лошадь желаемый результат - кошка, лошадь

Я нашел java код для него (https://www.javatpoint.com/program-to-find-the-duplicate-words-in-a-string), но он мне нужен в листах Google (независимо от сценария или формул) Я пытался использовать функции регулярных выражений, но не не достичь цели. Будет признателен, если кто-то может помочь мне с этой проблемой.

//java code
public class DuplicateWord {  
    public static void main(String[] args) {  
        String string = "Big black bug bit a big black dog on his big black nose";  
        int count;  

        //Converts the string into lowercase  
        string = string.toLowerCase();  

        //Split the string into words using built-in function  
        String words[] = string.split(" ");  

        System.out.println("Duplicate words in a given string : ");   
        for(int i = 0; i < words.length; i++) {  
            count = 1;  
            for(int j = i+1; j < words.length; j++) {  
                if(words[i].equals(words[j])) {  
                    count++;  
                    //Set words[j] to 0 to avoid printing visited word  
                    words[j] = "0";  
                }  
            }  

            //Displays the duplicate word if count is greater than 1  
            if(count > 1 && words[i] != "0")  
                System.out.println(words[i]);  
        }  
    }  
}  

Результат: повторяющиеся слова в данной строке: большой черный

Ответы [ 2 ]

1 голос
/ 23 апреля 2020

Использование getValue и Наборы :

const str = "dog, cat, cat, rat, horse, horse, cow, horse, horse";//from range.getValue()
const set = new Set(),dups = new Set();
str.split(/,\s*/).forEach(word => !(set.has(word) && dups.add(word)) && set.add(word));
console.info([...dups])
0 голосов
/ 23 апреля 2020
function removeDupes() {
  const ss=SpreadsheetApp.getActive();
  const v=ss.getActiveSheet().getRange('A1').getValue().toLowerCase().split(/\s/);
  var s=new Set(v);
  var o=[...s].join(' ');
  Logger.log(o);
}

Хорошо, это как раз наоборот.

function removeDupes() {
  const ss=SpreadsheetApp.getActive();
  const v=ss.getActiveSheet().getRange('A1').getValue().toLowerCase().split(/\s/);
  let o=[];
  let s=new Set();
  v.forEach(function(e,i){
    if(o.indexOf(e)==-1) {
      o.push(e);
    }else{
      s.add(e);
    }
  });
  Logger.log(...s);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...