从字符串中删除逗号

时间:2018-12-05 23:07:57

标签: java

我正在学习Java,但我只是想弄清楚如何解决这个问题。我有一个字符串,例如: The <object> <verb>, on the <object>.

<>中包含的每个字符串(<>仅用于说明,而不包含在原始字符串中)是哈希映射的键,这些键将返回随机值。
然后,我将字符串分成一个字符串数组,然后遍历该数组并搜索哈希图(如果该键存在)返回一个值,在上面的示例中,这是我遇到问题的地方 <verb>是密钥,但不是<verb>,(带逗号)
如何摆脱逗号,然后返回一个值。

因此最终结果我不需要完整的代码,仅是有关如何解决此特定问题的想法。

  

狗坐在猫上。

2 个答案:

答案 0 :(得分:0)

您可以使用正则表达式提取所有单词(仅由字母组成),然后根据需要搜索地图。我知道您只要求输入逗号,但是我认为这是用例。

List<String> allMatches = new ArrayList<String>();
Matcher m = Pattern.compile("[a-zA-Z]+") //regex for letter-strings only
     .matcher(yourString); // e.g. "The dog sat, on the cat."
 while (m.find()) {
    allMatches.add(m.group());
 }

结果将是以下列表:

{"The", "dog", "sat", "on", "the", "cat"}

然后,您可以迭代allMatches从数据结构中找到合适的结果。

P.S。当您使用正则表达式时,请尝试仅编译一次模式,并在需要时再次使用它,因为这样操作并不便宜。

答案 1 :(得分:0)

Java中String类的split方法采用regular expressions,而Java中的正则表达式具有or运算符,类似于if

因此,除了拆分像空格一样的单个字符,您还可以拆分诸如逗号,空格,空格和句点之类的几种不同内容。

String sentence = "The dog sat, on the cat.";
String [] words = sentence.split(", | |\\.");

管道字符|是regex的or运算符。 请注意,我添加了\\.,它将删除'。'。来自“猫”。 在正则表达式中,点表示“任何字母”,因此要与实际的点(句号,句子结尾)匹配,您需要使用\对其进行转义。 并且在Java字符串文字中(“”之间的任何内容)\\表示将实际的\放入字符串中,这样\\.会在\.收到时变成split作为参数。

还有一种更通用的方法:

String [] words = sentence.split("\\W+");

\W的意思是“任何非单词字符”-除字母,数字或下划线以外的任何字符,而+的意思是“连续出现一次或多次”。

因此,这会将字符串拆分成不是单词的任何内容。

请记住,在Java中,String类是不可变的-创建后便无法更改其内容。

因此,无论您使用哪种解决方案-Spara建议的replaceAll,使用nemanja228建议的Matcher进行单词搜索,还是我的答案中的split,都将始终有创建了原始字符串,并且原始字符串不会更改,因此您只需要保留对其的引用即可将其保留以备将来使用(不要更改保存它的变量)。