【发布时间】:2016-01-31 14:40:18
【问题描述】:
从字符串列表中过滤时,我想将连续的单个字符作为整个单词进行匹配
例如下面的字符串
'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"
我该怎么做,我可以使用正则表达式来实现吗?
我现在可以使用逐个搜索单词来处理整个单词的顺序,但不确定如何将连续的单个字符视为单个单词
例如"mg road" 或 "road mg" 我可以通过搜索 "mg" 和 "road" 一个来处理一个
编辑
为了让需求更清晰,下面是我的测试用例
@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 in this demo(单击Java)去除被空格包围的单个字母中的空格。对两者都执行此操作:stringtocheck 和 userinput。检查stringtocheck .contains userinput. -
@bobblebubble 是的,它起作用了.. 谢谢,你能把它添加为答案