当前位置:  开发笔记 > 编程语言 > 正文

Java等价的C#String.Format()和String.Join()

如何解决《Java等价的C#String.Format()和String.Join()》经验,为你挑选了6个好方法。

我知道这是一个新手问题,但在Java中C#的字符串操作是否相同?

具体来说,我正在谈论String.FormatString.Join.



1> Grant Wagner..:

Java String对象有一个format方法(从1.5开始),但没有join方法.

要获得一些尚未包含的有用的String实用程序方法,可以使用org.apache.commons.lang.StringUtils.


google collections:google-collections.googlecode.com也有一个Joiner.
仅就罗恩的评论而言,谷歌收藏品不久前更名为番石榴.
您应该更新此答案以反映Java 8引入了一个`String.join()`方法.

2> Allain Lalon..:

String.format.至于加入,你需要自己编写:

 static String join(Collection s, String delimiter) {
     StringBuilder builder = new StringBuilder();
     Iterator iter = s.iterator();
     while (iter.hasNext()) {
         builder.append(iter.next());
         if (!iter.hasNext()) {
           break;                  
         }
         builder.append(delimiter);
     }
     return builder.toString();
 }

以上内容来自http://snippets.dzone.com/posts/show/91


更确切地说:对于jdk1.4及更低版本的StringBuffer,对于jdk1.5及之后的StringBuilder,因为后者不同步,因此更快一些.
两个iter.hasNext()调用仍然是我通常附加分隔符然后"返回buf.substring(0,buf.length() - delimeter.length())".
您可以通过提前退出来简化它以避免分隔符:while(true)(add_iter; if(!iter.hasNext())break; add_delim;}

3> Noel Yap..:

番石榴自带的Joiner类.

import com.google.common.base.Joiner;

Joiner.on(separator).join(data);



4> qntm..:

从Java 8开始,join()现在可以作为String类的两个类方法使用.在这两种情况下,第一个参数是分隔符.

您可以将各个CharSequences作为附加参数传递:

String joined = String.join(", ", "Antimony", "Arsenic", "Aluminum", "Selenium");
// "Antimony, Arsenic, Alumninum, Selenium"

或者你可以通过Iterable:

List strings = new LinkedList();
strings.add("EX");
strings.add("TER");
strings.add("MIN");
strings.add("ATE");

String joined = String.join("-", strings);
// "EX-TER-MIN-ATE"

Java 8还添加了一个新类,StringJoiner您可以像这样使用它:

StringJoiner joiner = new StringJoiner("&");
joiner.add("x=9");
joiner.add("y=5667.7");
joiner.add("z=-33.0");

String joined = joiner.toString();
// "x=9&y=5667.7&z=-33.0"



5> Melllvar..:

TextUtils.join可在Android上使用



6> sgsweb..:

您还可以为字符串使用变量参数,如下所示:

  String join (String delim, String ... data) {
    StringBuilder sb = new StringBuilder();
    for (int i = 0; i < data.length; i++) {
      sb.append(data[i]);
      if (i >= data.length-1) {break;}
      sb.append(delim);
    }
    return sb.toString();
  }

推荐阅读
贴进你的心聆听你的世界
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有