मैं इस पाठ स्वरूपण कैसे करूँ? जावा

वोट
46

तो यहाँ समस्या है। सही स्वरूपण में एक पाठ फ़ाइल कर दें। समस्या की बात मैं एक फ़ाइल, एक पाठ फ़ाइल है, जो कि पाठ फ़ाइल में कोड होता है पढ़ने के लिए है। कि में कोड भयानक स्वरूपण है। स्वरूपण मुद्दा यह है कि जब वहाँ इस तरह एक घुंघराले ब्रेस है {, अगली पंक्ति सही करने के लिए रिक्त स्थान नहीं 4 है, यह करने के लिए बहुत छोड़ दिया सब सिर्फ है। इस कदर:

while (blah blah blah) { 
sysout(blahblahblah);

जब यह इस किया जाना चाहिए:

while (blah blah blah) { 
    sysout(blahblahblah); 

और वहाँ 2. के बीच कोई अन्य मतभेद केवल नियम बस यह इतना हर बार इस तरह की एक घुंघराले ब्रेस है {, सुनिश्चित करें कि अगली पंक्ति सही करने के लिए 4 स्थानों है बनाने के लिए बनाने के लिए है। और इसके विपरीत। इसलिए हर बार वहाँ इस तरह एक घुंघराले ब्रेस} है, अगली पंक्ति बाईं ओर 4 स्थानों होना चाहिए। मुझे आशा है कि आप लोग इस बात को समझ।

यह मेरा मुद्दा है। मैं कैसे एक कार्यक्रम जहाँ एक से अधिक रिक्त स्थान और लाइनों के साथ पाठ का एक टुकड़ा एक जगह हर बार साथ एक पंक्ति में बदल गया है बनाने के लिए सीखा है। बहुत कठिन नहीं था।

इस के लिए, हालांकि, मैं एक ही लाइन पर सब कुछ रखना है। वहाँ तो अगर 30 लाइनों, नए कार्यक्रम मैं भी 30 लाइनों है। मैं बहुत समान अंतर रखने की जरूरत है, लेकिन सरल अंतर पूरे ब्रेस बात है। तो बुनियादी तौर पर, मैं सिर्फ एक ब्रेस या तो सही करने के लिए 4 स्थानों के बाद लाइन बनाने के लिए है, और फिर भी ऐसा ही करता है, तो यह एक है, इसलिए इसमें छोड़ दिया 4 स्थानों के लिए है }घुंघराले ब्रेस।

तो कैसे मैं वास्तव में इस करते हैं? मैं कैसे सिर्फ इतना है कि ठीक करने के लिए अन्य बातों के ऊपर खिलवाड़ के बिना पता नहीं है। यह इस तरह के एक सरल बात मैं क्या करना है; बस ब्रेसिज़ दाएँ या बाएँ 4 स्थानों निम्नलिखित लाइनों करते हैं, लेकिन मैं अभी पता नहीं क्या वाक्य रचना यह पूरा करने का उपयोग करने के लिए है। धन्यवाद!

संपादित करें: यह सिर्फ यह आसान बना दिया है हो सकता है। तो, मूल रूप से, सभी लाइनों या तो एक सही घुंघराले ब्रेस, एक बाएं घुंघराले ब्रेस, या एक सेमी-कोलन के साथ समाप्त। कोई बात नहीं क्या। इसलिए हर बार उन पॉप अप में से एक है, यह एक पंक्ति के अंत है। तो हो सकता है अगर आप जानते हैं कि कैसे यह आसान बनाता है, तो मैं सिर्फ तुम्हें पता है दे रहा हूँ।

29/02/2016 को 23:04
उपयोगकर्ता
अन्य भाषाओं में...                            


3 जवाब

वोट
0

वहाँ प्रोग्राम हैं जो आपके लिए अपने आप यह कार्य करेगा, ताकि आप पहिया बदलने की जरूरत नहीं है। उदाहरण के लिए, ग्रहण में, टाइप करें: ctrl-a(सभी का चयन करें) ctrl-i(ऑटो मांगपत्र)।

29/02/2016 को 23:43
का स्रोत उपयोगकर्ता

वोट
0

यहाँ एक स्यूडोकोड आप के साथ शुरू कर सकते हैं:

int indentLevel = 0;
while(currentchar = nextchar != null){
    printCurrentChar
    if(currentchar is '{'){
        indentLevel++;
    }else if(currentchar is '}'){
        indentLevel--;
    }else if(currentchar is '\n'){
        print indentLevel * 4 spaces
    }
}

आप हालांकि बच गए ब्रेसिज़ और अन्य जटिलताओं से निपटने के लिए आवश्यकता हो सकती है

29/02/2016 को 23:54
का स्रोत उपयोगकर्ता

वोट
0

आप रेगुलर एक्सप्रेशन का उपयोग कर बहुत आसानी से कर सकते हैं। आप इसे नहीं जानते हैं और एक प्रोग्रामर होने की योजना बना रहा है, तो निश्चित रूप से यह जानने के। यह आपको भविष्य में बहुत समय के लिए बचत होगी।

public class TextIndentator
{

    public static void main(String[] args) throws IOException
    {
        File uglyText = new File("ugly.txt");
        System.out.println((uglyText.exists() && !uglyText.isDirectory()) ? getNiceText(uglyText) : "FILE \"ugly.txt\" at " + System.getProperty("user.dir") + " do not exists");
    }

    static String getNiceText(File uglyText) throws IOException
    {
        // Opening file
        FileInputStream inputStream = new FileInputStream(uglyText);
        InputStreamReader isr = new InputStreamReader(inputStream);
        BufferedReader reader = new BufferedReader(isr);
        StringBuilder builder = new StringBuilder();
        StringBuffer buffer = new StringBuffer();

        // Algorithm starts here
        String line;
        boolean checkNext = false;
        while ((line  = reader.readLine()) != null)
        {
            if(checkNext)
            {
                // If previous line finished with '{' (And optionally with some whitespaces after it) then, replace any amount (including zero) of whitespaces with 4 witespaces
                builder.append(line.replaceFirst("\\s*", "    "));
            }
            else
            {
                builder.append(line);
            }
            // Check if line line finishes with { (And optionally with some whitespaces after it)
            if(line.matches(".*\\{\\s*")) checkNext = true;
            else checkNext = false;

            //Append line separator at the end of line
            builder.append(System.getProperty("line.separator"));
        }
        return builder.toString();
    }

}
01/03/2016 को 02:01
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more