2009-12-14 12 views
40

मैं एक समारोह निम्नलिखित हस्ताक्षर है कि बनाने के लिए करना चाहते हैं:एक एक विशिष्ट लंबाई के लिए एक एकल दोहराया चरित्र के साथ एक जावा स्ट्रिंग आरंभ कर सकते हैं

public String createString(int length, char ch) 

यह निर्दिष्ट के पात्रों को दोहरा की एक स्ट्रिंग लौटना चाहिए लंबाई।

उदाहरण के लिए यदि लंबाई 5 और ch है वापसी मान

ppppp 

वहाँ पाशन जब तक यह आवश्यक लंबाई है बिना यह करने के लिए एक रास्ता है होना चाहिए 'पी' है?
और बिना किसी बाहरी परिभाषित स्थिरांक के?

+1

यह एक नकली कैसा दिखाई देता है सवाल है, लेकिन यहां जवाब बहुत अच्छे हैं :) –

उत्तर

80
char[] chars = new char[len]; 
Arrays.fill(chars, ch); 
String s = new String(chars); 
+1

वास्तव में सरल और सहायक। –

26

StringUtils.repeat(str, count) Apache Commons-लैंग

+1

बिल्कुल सही! जब आप 1 लिख सकते हैं तो तीन पंक्तियां क्यों लिखें? – deGoot

+2

@deGoot, क्योंकि आपको उस – zegoline

+0

के लिए तीसरे पक्ष की लाइब्रेरी की आवश्यकता है, जो आपके पास पहले से ही है .. :) – Bozho

5

रिकॉर्ड के लिए, Java8 के साथ धाराओं के साथ ऐसा कर सकते हैं से:

String p10times = IntStream.range(0, 10) 
    .mapToObj(x -> "p") 
    .collect(Collectors.joining()); 

लेकिन यह कुछ हद तक overkill लगता है।

+0

ठंडाता के लिए उपरोक्त। –

+1

इंटस्ट्रीम मानों को उत्पन्न करने और हटाने से बचने के लिए 'स्ट्रिंग पी 10 टाइम्स = स्ट्रीम.generate (() -> "पी")। सीमा (10) .collect (collect.joining()); ' – Jelaby

2

यहाँ एक सुंदर और शुद्ध जावा एक पंक्ति का समाधान है:

String str = new String(new char[10]).replace("\0", "1");

स्रोत: https://stackoverflow.com/a/4903603/462347

1

बिट अधिक अग्रिम और पठनीय,

public static String repeat(int len, String ch) { 

     String s = IntStream.generate(() -> 1).limit(len).mapToObj(x -> ch).collect(Collectors.joining()); 
     System.out.println("s " + s); 
     return s;  
    } 
संबंधित मुद्दे