При фильтрации из списка строк я хочу совместить последовательные одиночные символы как целое словоСопоставьте последовательные одиночные символы как целое слово
например. ниже строки
'm g road'
'some a b c d limited'
в первом случае должны совпадать, если пользователь
"mg" or "m g" or "m g road" or "mg road"
во втором случае должны совпадать, если пользователь
"some abcd" or "some a b c d" or "abcd" or "a b c d"
Как я могу это сделать, может Я достигаю этого с помощью регулярного выражения?
Ордена целых слов я могу обрабатывать прямо сейчас с помощью поисковых слов один на один, , но не знает, как относиться к последовательным одиночным символам, как одно слово
например «мг дорога» или «дорога мг» я могу обрабатывать путем поиска «мг» и «дороги» один на один
EDIT
Для изготовления требования более ясным, ниже мой тестовый случай
@Test
public void testRemoveSpaceFromConsecutiveSingleCharacters() throws Exception {
Assert.assertTrue(Main.removeSpaceFromConsecutiveSingleCharacters("some a b c d limited").equals("some abcd limited"));
Assert.assertTrue(Main.removeSpaceFromConsecutiveSingleCharacters("m g road").equals("mg road"));
Assert.assertTrue(Main.removeSpaceFromConsecutiveSingleCharacters("bank a b c").equals("bank abc"));
Assert.assertTrue(Main.removeSpaceFromConsecutiveSingleCharacters("bank a b c limited n a").equals("bank abc limited na"));
Assert.assertTrue(Main.removeSpaceFromConsecutiveSingleCharacters("c road").equals("c road"));
}
Вы можете вырезать пробелы внутри пространственно окруженных одиночных букв '.replaceAll (" (? <= \\ b \\ w) + (? = \\ w \\ b) "," ")' [like в этой демонстрации] (http://fiddle.re/9kkdz6) (щелкните Java). Сделайте это для обоих: stringtocheck и userinput. Убедитесь, что [stringtocheck .contains userinput] (http://stackoverflow.com/a/2275035/5527985). –
@bobblebubble да, это сработало .. Спасибо, вы можете добавить его как ответ – Akhil