2009-06-10 91 views
1

字符串我想要像「A B C」到「prefix_a prefix_b prefix_c」如何處理在Java中

如何做到這一點在Java中的字符串?

回答

3

假定的空間(" "),則String可以使用split方法被分割的分割字符,那麼每個新String可以具有prefix_所附,然後再連接到回String

String[] tokens = "a b c".split(" "); 
String result = ""; 

for (String token : tokens) { 
    result += ("prefix_" + token + " "); 
} 

System.out.println(result); 

輸出:

prefix_a prefix_b prefix_c 

使用如有必要,一個StringBuilder會提高性能:

String[] tokens = "a b c".split(" "); 
StringBuilder result = new StringBuilder(); 

for (String token : tokens) { 
    result.append("prefix_"); 
    result.append(token); 
    result.append(" "); 
} 
result.deleteCharAt(result.length() - 1); 

System.out.println(result.toString()); 

第一個示例唯一的問題是在最後一個標記末尾會有一個無關的空格。

+0

您可以使用.trim()將空間留在最後,因爲該要求並不表示存在前導或尾隨空格。 – ninesided 2009-06-10 01:37:56

+0

@nnesided:這是一個好主意,謝謝你的建議:) – coobird 2009-06-10 01:44:40

0

希望我不會誤解這個問題。你只是在尋找直接連接?

String someString = "a"; 
String yourPrefix = "prefix_"; // or whatever 
String result = yourPrefix + someString; 

System.out.println(result); 

會告訴你

prefix_a 
+0

woops。以爲你在那裏有「一個」「B」「C」。所以是的,首先使用String.split來獲取片斷。 – JustJeff 2009-06-10 01:17:30

0

這是C#,但應該很容易轉換到Java(但它不是一個非常聰明的解決方案)。

String input = "a b c"; 
String output (" " + input).Replace(" ", "prefix_") 

UPDATE

第一溶液具有在輸出沒有空格。該解決方案需要在輸入中沒有佔位符號(#)。

String output = ("#" + input.Replace(" ", " #")).Replace("#", "prefix_"); 

使用StringBuilder可能更有效。

String input = "a b c"; 

String[] items = input.Split(new[] {' '}, StringSplitOptions.RemoveEmptyEntries); 

StringBuilder sb = new StringBuilder(); 

foreach (String item in items) 
{ 
    sb.Append("prefix_"); 
    sb.Append(item); 
    sb.Append(" "); 
} 

sb.Length--; 

String output = sb.ToString(); 
+0

反對的原因?語言不容忍? :D – 2009-06-10 01:23:56

0

可以使用的StringTokenizer枚舉在你的字符串,以「空間」分隔符,並在你的循環,你可以在你的枚舉添加前綴到當前元素。底線:請參閱javadoc中的StringTokenizer。

你也可以用正則表達式和單詞邊界(「\ b」)來做,但這看起來很脆弱。

另一種可能性是使用String.split將字符串轉換爲字符串數組,然後遍歷「a」,「b」和「c」數組,並在數組元素前加上前綴選擇。

0

您可以使用正則表達式分割字符串,並與環一起放回它產生的陣列上:

public class Test { 
    public static void main (String args[]) { 
     String s = "a b c"; 
     String[] s2 = s.split("\\s+"); 
     String s3 = ""; 
     if (s2.length > 0) 
      s3 = "pattern_" + s2[0]; 
     for (int i = 1; i < s2.length; i++) { 
      s3 = s3 + " pattern_" + s2[i]; 
     } 
     System.out.println (s3); 
    } 
}