Сравнение строк без специального символа - PullRequest
1 голос
/ 04 июня 2011

У меня есть строки, содержащие специальные символы, например,

 "ravi", "Ravi" ,"!ravi","ravi...","RaVi)" etc..

Я хочу, чтобы все это рассматривалось как одно и то же. Как этого добиться. Может быть в сценарии оболочки, C, C ++, JAVA.

Спасибо, Рави.

Ответы [ 3 ]

5 голосов
/ 04 июня 2011

В C я бы использовал isalpha в цикле, удаляя ненужные символы перед обработкой строки.

#include <ctype.h>

/* ... */

loop {
  if (isalpha((unsigned char)*src)) *dst++ = *src;
  src++;
}
3 голосов
/ 04 июня 2011

Java: str.toLowercase().replace("[^a-zA-Z]", "") отобразит их все в нижнем регистре с удаленными специальными символами и, следовательно, все equal()

Отредактировано, чтобы охватить все , а не альфа как "специальный"

0 голосов
/ 04 июня 2011

Используйте find функцию String в c ++, чтобы найти вхождение вашей подстроки в вашем случае "ravi".

size_t find ( const string& str, size_t pos = 0 ) const;

Он вернет вам начальный индекс вашей подстроки в основной строке.

Используя эту информацию, вы можете манипулировать строкой согласно вашему требованию.

Подробнее о строке :: find

...