স্ট্রিংবিল্ডারে কীভাবে একটি নতুন লাইন যুক্ত করা যায়


234

আমার একটা StringBuilderজিনিস আছে,

StringBuilder result = new StringBuilder();
result.append(someChar);

এখন আমি এর সাথে একটি নতুন লাইন চরিত্র যুক্ত করতে চাই StringBuilder। আমি এটা কিভাবে করবো?

result.append("/n"); 

কাজ করে না. সুতরাং, আমি ইউনিকোড ব্যবহার করে একটি নতুন লাইন লেখার কথা ভাবছিলাম। এই সাহায্য করবে? যদি তাই হয় তবে আমি কীভাবে একটি যুক্ত করতে পারি?


23
আমি ভেবেছিলাম এটি "\n", বা System.getProperty("line.separator")
অ্যালভিন ওয়াং

একটি নতুন লাইন অবশ্যই লাইন ফিড (এলএফ) (এসসিআই / ইউনিকোড 10) অক্ষর নয়। হিসাবে সঠিক উত্তর পয়েন্ট আউট জাভা আপনি হয় এক (লাইন ফিড অথবা একটি প্ল্যাটফর্ম-নির্দিষ্ট সম্পর্কে newline) পেতে পারেন।
বাসিল বাউর্ক

উত্তর:


510

এটা করা উচিত

r.append("\n");

তবে আমি আপনাকে নীচের মতো করার পরামর্শ দিচ্ছি,

r.append(System.getProperty("line.separator"));

System.getProperty("line.separator")জাভাতে আপনাকে সিস্টেম-নির্ভর নিউলাইন দেয়। জাভা 7 থেকেও একটি পদ্ধতি রয়েছে যা সরাসরি মানটি দেয়:System.lineSeparator()


87
System.lineSeparator শর্টকাটের জন্য +1। আরও বড় প্রশ্ন হ'ল কেন একটি StringBuilder#appendLine()পদ্ধতি নেই।
প্যাট্রিক এম

14
System.lineSeparator()ডকুমেন্টেশনে "সিস্টেম-নির্ভর লাইন বিভাজক স্ট্রিং প্রদান করে"। এটি প্ল্যাটফর্ম স্বতন্ত্র নয়। যদি আপনি একটি স্ট্রিং, যাতে অন্তর্নিহিত অপারেটিং সিস্টেম দ্বারা ব্যবহার করা হবে লিখতে প্রয়োজন এই কোড ব্যবহার করুন, অন্যথায় ব্যবহার '\n'
টাস্কল্যান্ড

2
@ টসকল্যান্ড - কেন আপনি কেবল সর্বদা System.lineSeparator () ব্যবহার করবেন না? '\ N' কেন ডিফল্ট হিসাবে ভাল বিকল্প?
রায়ানফায়েস্কটল্যান্ড

16
না, System.lineSeparator()ব্যবহার করা উচিত যখন আপনি অ-বহনযোগ্য সংস্থানগুলি (যেটি অন্তর্নিহিত অপারেটিং সিস্টেমের জন্য নির্দিষ্ট সংস্থানসমূহ) নিয়ে ডিল করেন। আপনি উইন্ডোজ (\ r \ n) বা ইউনিক্স (\ n) এ জাভা চালাচ্ছেন এর পরিবর্তে এর আলাদা মান রয়েছে। আপনি যদি System.lineSeparator()সমস্ত সময় ব্যবহার করেন, আপনি অতএব বহনযোগ্য ফাইল তৈরি করতে পারবেন।
tuscland

6
অবিশ্বাস্য ইতিমধ্যে কোনও appendLineওভারলোড চালু নেই StringBuilder
জোশ এম

22

আরেকটি বিকল্প হ'ল অ্যাপাচি কমন্স স্টারবিল্ডার ব্যবহার করা, যার স্ট্রিংবিল্ডারের অভাব রয়েছে এমন কার্যকারিতা রয়েছে।

StrBuilder.appendLn ()

সংস্করণ ৩.6 অনুসারে স্ট্রাবিল্ডারটিকে একই কার্যকারিতা সহ টেক্সটস্ট্রিংবিল্ডারের পক্ষে অবচয় করা হয়েছে


5
... এবং জাভা 8-এর পরে স্ট্রিংজাইনার রয়েছে , যা " একটি ডিলিমিটার দ্বারা পৃথক করে অক্ষরগুলির ক্রম তৈরির জন্য ব্যবহৃত হয় এবং বিকল্পভাবে সরবরাহিত উপসর্গ দিয়ে শুরু করে সরবরাহিত প্রত্যয় দিয়ে শেষ হয় " "\ n" কে ডিলিমিটার হিসাবে ব্যবহার করার ফলে নতুন দেখা যায় লাইনগুলি (শেষটি ব্যতীত)। অভ্যন্তরীণভাবে, এটি একটি স্ট্রিংবিল্ডার ব্যবহার করে। আমি মনে করি গুগল পেয়ারা যোগদানকারী ব্যবহার করে একই পন্থা উপলব্ধি করা যায়।
জেচারহফ

1
... এবং এখন এটি deprecated। দয়া করে ব্যবহার করুন org.apache.commons.text.TextStringBuilder
অশোক এম

16

পালাতে হবে \, না দিয়ে করা উচিত /

তাই r.append('\n');বা r.append("\n");ইচ্ছার কাজ ( StringBuilderজন্য ওভারলোড হয়েছে পদ্ধতি charএবং Stringটাইপ)।



2

আমি স্ট্রিংবুডলারের অনুরূপ মূল ক্লাস তৈরি করি এবং পদ্ধতি অ্যাপেন্ডলাইন (স্ট্রিং স্ট্রিং) কল করে লাইন যুক্ত করতে পারি।

public class StringBuilderPlus {

    private StringBuilder sb;

    public StringBuilderPlus(){
         sb = new StringBuilder();
    }

    public void append(String str)
    {
        sb.append(str != null ? str : "");
    }

    public void appendLine(String str)
    {
        sb.append(str != null ? str : "").append(System.getProperty("line.separator"));
    }

    public String toString()
    {
        return sb.toString();
    }
}

ব্যবহার:

StringBuilderPlus sb = new StringBuilderPlus();
sb.appendLine("aaaaa");
sb.appendLine("bbbbb");
System.out.println(sb.toString());

কনসোল:

aaaaa
bbbbb

1

আপনি String.format(দেখুন java.util.Formatter) এর মধ্যে লাইন বিভাজক চরিত্রটিও ব্যবহার করতে পারেন যা প্ল্যাটফর্ম অজিনস্টিক is

অর্থাৎ,

result.append(String.format("%n", ""));

আপনার যদি আরও লাইন স্পেস যুক্ত করার প্রয়োজন হয় তবে কেবল এটি ব্যবহার করুন:

result.append(String.format("%n%n", ""));

আপনি StringFormatআপনার সম্পূর্ণ স্ট্রিংটি ফর্ম্যাট করতে ব্যবহার করতে পারেন , শেষে একটি নতুন লাইন (গুলি)।

result.append(String.format("%10s%n%n", "This is my string."));

0

কোটলিনের জন্য,

StringBuilder().appendln("your text");

যদিও এটি একটি জাভা প্রশ্ন, এটি কোটলিনের জন্য প্রথম গুগল ফলাফলও কার্যকর হতে পারে।


প্রশ্নটি "জাভা" এর অধীনে ট্যাগ করা হয়েছে। এমন কোনও সমাধান পোস্ট করার দরকার নেই যা প্রশ্নের সাথে সম্পর্কিত ভাষার জন্যও নয়।
chntgomez

@ চেন্টগোমেজ আমি কোটলিনের স্ট্রিংবিল্ডারের কাছে একটি নতুন লাইন যুক্ত করার জন্য একটি উপায় সন্ধান করেছি এবং এটি পেয়েছি :-)
আলেকজান্ডার পোলেসুক

0

কেএস এর স্ট্রিংবিল্ডারপ্লাস ক্লাস তৈরির প্রতিক্রিয়া এবং একটি চূড়ান্ত শ্রেণি প্রসারিত করার জন্য থাপ অ্যাডাপ্টার প্যাটার্নটি ব্যবহার করার ক্ষেত্রে, আপনি যদি জেনেরিকগুলি ব্যবহার করেন এবং নতুন অ্যাপেন্ড এবং অ্যাপেন্ডলাইন পদ্ধতিতে স্ট্রিংবিল্ডারপ্লাস অবজেক্টটি ফিরিয়ে দেন, আপনি স্ট্রিং বিল্ডারদের অনেকগুলি অ্যাপেন্ড পদ্ধতি ব্যবহার করতে পারেন সমস্ত ভিন্ন ধরণের জন্য, একাধিক অ্যাপেন্ড কমান্ড একসাথে স্ট্রিংয়ের ক্ষমতা ফিরে পাওয়ার সাথে সাথে, যেমন নীচে দেখানো হয়েছে

public class StringBuilderPlus {

    private final StringBuilder stringBuilder;

    public StringBuilderPlus() {
        this.stringBuilder = new StringBuilder();
    }

    public <T> StringBuilderPlus append(T t) {
        stringBuilder.append(t);
        return this;
    }

    public <T> StringBuilderPlus appendLine(T t) {
        stringBuilder.append(t).append(System.lineSeparator());
        return this;
    }

    @Override
    public String toString() {
        return stringBuilder.toString();
    }

    public StringBuilder getStringBuilder() {
        return stringBuilder;
    }
}

তারপরে আপনি একে একে আসল স্ট্রিংবিল্ডার শ্রেণির মতো ব্যবহার করতে পারেন:

StringBuilderPlus stringBuilder = new StringBuilderPlus();
stringBuilder.appendLine("test")
    .appendLine('c')
    .appendLine(1)
    .appendLine(1.2)
    .appendLine(1L);

stringBuilder.toString();

-2

অ্যান্ড্রয়েডের জন্য, পড়ুন এবং লেখার জন্য এটি ব্যবহার করুন!

private void writeToFile(String message) {
        try {
            OutputStream outputStream = openFileOutput("todoList.txt",Context.MODE_PRIVATE);
            OutputStreamWriter outputStreamWriter = new OutputStreamWriter(outputStream);
            outputStreamWriter.write(message);
            outputStreamWriter.close();

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    private String readFromFile() throws IOException {

        String result = "";
        InputStream inputStream = openFileInput("todoList.txt");

        if (inputStream != null) {
            InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
            BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
            String tempString = "";
            StringBuilder stringBuilder = new StringBuilder();

            while ( (tempString = bufferedReader.readLine()) != null ) {

                stringBuilder.append(tempString);
                stringBuilder.append("\n");
            }
            inputStream.close();
            result = stringBuilder.toString();
        }
        return result;
    }

1
এটি প্রশ্নেরও উত্তর নয়
chntgomez
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.