2

我尝试仅从给定文本中每个单词的末尾删除点。(在java中)例如:

input: java html. .net node.js php.
output: java html .net node.js php

谢谢

4

5 回答 5

3

根据您对单词的定义,您可以替换:

(\w)\.(?!\S)

$1. 这将删除.单词末尾的所有内容,然后是空格或字符串结尾。

于 2013-05-20T19:15:44.543 回答
2

你可以做:

String repl = "java html. .net node.js php.".replaceAll("\\.(?!\\w)", "");

// java html .net node.js php
于 2013-05-20T19:43:19.283 回答
1
for(String str : input.split(" "))
{ 
     if(str.charAt(str.len - 1) == '.')
         str = str.substr(0, str.len - 2);

     //do something with str
}

如果可能的话,我会避免使用正则表达式,因为它们要慢得多。

于 2013-05-20T19:15:35.243 回答
0

如果您要使用正则表达式,我建议使用单词边界

 \.\B

这仅匹配单词边界末尾的文字点。

于 2013-05-20T19:54:23.193 回答
0

基于 Qtax 的回答的详细解决方案:

String s = "java html. .net node.js php.";
System.out.println(s);
s = s.replaceAll("(\\w)\\.(?!\\S)", "$1");
System.out.println(s);

输出:

java html .net node.js php
于 2017-03-03T00:42:25.577 回答