regex remove dot from end of each word in text

后端 未结 5 1654
清酒与你
清酒与你 2021-01-21 17:15

I try to remove dot only from end of each word in given text. (in java) for example:

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


        
相关标签:
5条回答
  • 2021-01-21 17:37

    Depending on your definition of word you could replace:

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

    with $1. Which would remove all . at the end of a word followed by a space or end of string.

    0 讨论(0)
  • 2021-01-21 17:40
    for(String str : input.split(" "))
    { 
         if(str.charAt(str.len - 1) == '.')
             str = str.substr(0, str.len - 2);
    
         //do something with str
    }
    

    I would avoid regular expressions if at all possible as they are much slower.

    0 讨论(0)
  • 2021-01-21 17:43

    You can do:

    String repl = "java html. .net node.js php.".replaceAll("\\.(?!\\w)", "");
    
    // java html .net node.js php
    
    0 讨论(0)
  • 2021-01-21 17:44

    If you're going to use a regular expression, I'd recommend using a word boundary.

     \.\B
    

    This matches a literal dot at the end of a word boundary only.

    0 讨论(0)
  • 2021-01-21 17:54

    An elaborated solution based on Qtax's answer:

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

    Output:

    java html .net node.js php
    
    0 讨论(0)
提交回复
热议问题