удалить строки массива в данной строке? - PullRequest
0 голосов
/ 24 июня 2019
String fullname="Mr Vivek N Nandakumar Sr";
String [] strst={"Sr.", "sr.", "Jr.", "jr.","Jr ","jr ","Sr ","sr "," Jr"," jr"," Sr"," sr",",I",".I","I.","II","III"," IV","IV ",".IV",",IV", "V.","V ",".V",",V","VI", "VII", "VIII", "IX", "X" ,"M.D","MBA","PhD","M.A","Mr.","Mr ","Mrs.","Miss","MISS","miss","MR ","MRS ","mr ","mrs "," mr"," mrs","Dr ","DR ","Dr.","DR.",")","("};          

Я просто хочу удалить строки данного массива из полного имени ..

Я хочу, чтобы вывод был похож на .... "Vivek N Nandakumar"

Ответы [ 2 ]

0 голосов
/ 24 июня 2019

Если у вас нет ограничений по сложности пространства, то попробуйте разделить основную строку, используя пробел (если разделены пробелом) в массиве, и проверьте каждое значение с данным массивом, если найдено, удалите это значение из массива основной строки и в конце объединить основной массив строк. Я скажу использовать set для хранения второго списка, это поможет вам увеличить производительность по времени. это сократит время с O (n ^ 2) до O (n).

0 голосов
/ 24 июня 2019

Я не знаю, какую версию Java вы используете, но в Java 8 я бы использовал потоки примерно так:

Arrays.stream(fullname.split(" ")).filter(namePart -> Arrays.stream(strst).noneMatch(str -> str.trim().equals(namePart))).collect(Collectors.joining(" "));

для меня вывод пришел как ты хотел.

EDIT

Это относится к JAVA 7. Перед этим вам нужно выполнить собственный поиск.

    String fullname="Mr Vivek N Nandakumar Sr";
    String [] strst={"Sr.", "sr.", "Jr.", "jr.","Jr ","jr ","Sr ","sr "," Jr"," jr"," Sr"," sr",",I",".I","I.","II","III"," IV","IV ",".IV",",IV", "V.","V ",".V",",V","VI", "VII", "VIII", "IX", "X" ,"M.D","MBA","PhD","M.A","Mr.","Mr ","Mrs.","Miss","MISS","miss","MR ","MRS ","mr ","mrs "," mr"," mrs","Dr ","DR ","Dr.","DR.",")","("};
    Arrays.sort(strst);
    StringBuilder sb = new StringBuilder();

    for (String namePart :
            fullname.split(" ")) {
        if (Arrays.binarySearch(strst, namePart, new Comparator<String>() {
            @Override
            public int compare(String o1, String o2) {
                return o1.trim().compareTo(o2.trim());
            }
        }) < 0 ) {
            sb.append(namePart).append(" ");
        }
    } 
    return sb.toString();
...