2016-02-04 158 views
-1

我想通过以下方式创建管道分隔字符串。创建管道分隔字符串

strBuf.append(str[0]); 
strBuf.append("\\|"); 

结果是:

ABC\ DEF\ GHI 

预期的结果是:

ABC|DEF|GHI 

正是我甚至双斜线逃脱之后做错了什么。

+0

为什么你需要逃避'| '?什么是'str [0]'? – user1803551

+0

str [0]是任何字符串。 –

+2

然后你是不一致的。显示产生你发布的输出的确切代码,而不是“任何字符串”。 – user1803551

回答

3

这里没有必要使用espace序列。简单做:

strBuf.append("|"); 

如:

String abc = "ABC"; 
String def = "DEF"; 
String ghi = "GHI"; 
StringBuilder sb = new StringBuilder(); 
sb.append(abc); 
sb.append("|"); 
sb.append(def); 
sb.append("|"); 
sb.append(ghi); 
System.out.println(sb.toString()); //prints ABC|DEF|GHI 
+0

我正在使用StringBuffer,它会有所作为吗? –

+3

@UkkarshSaraf否,但除非您需要它是线程安全的,否则使用'StringBuilder'。 – user1803551

0

您是否试过不逃避|角色?

strBuf.append(str[0]); 
strBuf.append("|"); 
+0

当与StringBuffer一起使用时,它将输出作为'ABC DEF GHI'输出 –

+0

@UkkarshSaraf如果管道字符被转换/显示为空格,则发生在其他地方。 'append(“|”)'*将*插入一个管道字符到字符串中。 – Andreas

0

如果您使用的是Java 8:

String[] s={"ABC","DEF","GHI"}; 
System.out.println(String.join("|",s)); 

对Java 7

String abc = "ABC"; 
     String def = "DEF"; 
     String ghi = "GHI"; 
     StringBuilder strBuf=new StringBuilder(); 
     strBuf.append(abc); 
     strBuf.append("|"); 
     strBuf.append(def); 
     strBuf.append("|"); 
     strBuf.append(ghi); 
     System.out.println(strBuf.toString());