【问题标题】:[java]Remove unecesarry Space[java]删除不必要的空格
【发布时间】:2014-03-28 19:01:45
【问题描述】:

我有一个包含多个空格的字符串,这是不必要的,我想删除那个空格并需要一个结构良好的输出。我需要在单词之间留一个空格。 输入:在 number 之后,第一个单词之前有多个空格.. 5 新行,@line 有多个空格

1





        An item one



        area city, country 
        type of area
        time of event 1

2





        An item one



        area  city, country 
        type of area
        time of event 1

3 ... idem

`

我想要的只是这样的结构:

An item one; area city, country; type of area; time of event 1;

An item two; area city, country; type of area; time of event 2; . . .

我试试 st.replaceAll("\n", "") 但它不是我所期望的.. 需要帮助..

更新部分已解决,已经存在另一个问题

  1. 问题一

            s = s.replaceAll("\\n+", " ");
            s = s.trim();
            s = s.replaceAll(" \\s+", ";");
    

    输出:

1 An item one; area city, country; type of area; time of event 1 2 An item one; area;city, country; type of area; time of event 1

现在存在第二个问题,例如当单词中存在超过 1 个空格时

area city 和结果给 area;city ,所以帮我这个...

【问题讨论】:

  • 推荐使用分隔符
  • 失败,您的结果与您原来的问题不符。请参阅我的答案以了解正确的方法。
  • 单词之间有多个空格怎么办?修剪不会删除它。修剪只从左右端移除
  • 是的,我还是失败了,我只是纠正我的帖子.. 抱歉.. 我只是删除 [已解决] 问题仍然存在
  • 请澄清一下,您要删除 ^number\r\n 吗?

标签: java parsing html-parsing


【解决方案1】:
    public static void main(String[] args) {
    String s= "abc     def    agig";
    s=s.trim(); // thanks to Christian for the suggestion. 
    s= s.replaceAll("\\s+", " ");
    System.out.println(s);

    O/P : abc def agig

【讨论】:

  • 我肯定会说空格不在末尾或开头。
  • 如果投票者愿意发表评论,我可以学到更多...... :)
  • @Christian - 哎呀......“”应该是“”。我的错。用“”替换一次或多次出现的“”。没看到我输入了“”。
  • 也使用trim(),因为 OP 字符串有尾随空格。
  • s= s.replaceAll("\\s+", " "); 不替换尾随空格吗?
【解决方案2】:

将此用于所需的输出:

输入:

An item one



area city, country
type of area
time of event 1

在下面使用:

st = st.replaceAll("\\r?\\n+",";");

输出:

An item one;area city, country;type of area;time of event 1

【讨论】:

  • 结果1 ; ; ; ; ; ; An item one; ; ; ; area city, country ; type of area; time of event 1 ;
  • @user3145749 你输入的字符串是什么?
  • @user3145749 你有没有在使用过的正则表达式中使用 + 作为\\r?\\n+
  • @enhaka 你能给我确切的输入吗?
  • 确切的输入显示在我的询问帖子中。输入:在 number 之后,第一个单词之前有多个空格.. 5 新行,@line 有多个空格
【解决方案3】:

目标是从多行变为以分号分隔的文本并删除多余的空格?

也许您需要使用多行代码。先去掉多余的新行,再去掉多余的空格,然后把分号放进去并加入行

所以首先将所有双新行替换为单行:

st = st.replace("\r", "\n"); // just in case you have windows new line
st = st.replace("\n\n", ); // optional, else string tokeizer will by default iggnore consecutive seperators 

现在是换行符的字符串标记器

logger.info("Initial :[[[" + st + "]]]");
StringTokenizer st1 = new StringTokenizer (st, "\n");
StringBuilder sb = new StringBuilder (); //the final string, will be built here
boolean first = true;
while(st1.hasMoreTokens(){
    s = st1.nextToken();
    s = s.trim();
    s =  s.replace("  ", " ");//two spaces with one
    if(frist){
       first = false;
    }else{
        sb.append(";");
    }
    sb.append(s);
}
logger.info("Final :[[[" + sb + "]]]");

注意

  1. 这不是编译代码,只是为了清楚起见写在这里

  2. 如果您不使用日志记录,您应该使用,或者使用 System.out.println ...

【讨论】:

    【解决方案4】:
    yourString = yourString.replaceAll("\\s+", " ");
    

    例如

    System.out.println("abcd           ipsum          dolor \n sit.".replaceAll("\\s+", " "));
    

    输出

    abcd ipsum dolor sit.
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-21
      • 1970-01-01
      • 2015-05-08
      • 1970-01-01
      • 2014-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多