简体   繁体   English

如何检查是否有新行?

[英]How can I check if there is a new line?

this program is supposed to convert something like: 这个程序应该转换为:

\hyp76{a,1+a-b}b{xy}

to: 至:

\HyperpFq{7}{6}@@{a,1+a-b}{b}{xy}.

As you can see, if the contents of a group is one character, then there are no brackets. 如您所见,如果组的内容是一个字符,则没有括号。 However, when one of the groups with brackets is at the end of a line, it skips over that group and treats that as the single character(without brackets) case. 但是,当其中一个带方括号的组位于一行的末尾时,它将跳过该组并将其视为单个字符(不带方括号)的大小写。 How can I avoid this? 如何避免这种情况? Thanks. 谢谢。 Here is my code: 这是我的代码:

static int checkNestedBrackFront(String line, int pos){
    int count=0;
    for(int i=pos;i<line.length();i++ ){
        if(line.charAt(i)=='{')
            count++;
        if(line.charAt(i)=='}'&&count==0)
            return i;
        if(line.charAt(i)=='{')
            count--;
    }
    return 0;
}

line = new Scanner(new File("KLSadd.tex")).useDelimiter("\\Z").next();
    PrintWriter writer = new PrintWriter("Converted.tex");
    while(line.contains("\\hyp76")){
            int posHyp = line.indexOf("\\hyp76");
            String beforeHyp = line.substring(0,posHyp);
            int start = posHyp+7;   
            String firstArgs = line.substring(start, line.indexOf("}", start));
            if(line.charAt((line.indexOf("}", start)+1))!='{'&&!(line.substring(start, start+4).contains("\n"))){ //this is to check for single characters
                secArgs = line.substring(line.indexOf("}", start) + 1,line.indexOf("}", start) + 2 );
                posSec=line.indexOf("}", start)+1;
            }
            else {
                int posBrack = line.indexOf("{", line.indexOf("}", start));
                posSec = checkNestedBrackFront(line, posBrack+1);
                secArgs = line.substring(posBrack+1, posSec);
            }
            if((line.charAt(posSec+1)!='{')&&!(line.substring(posSec,posSec+4).contains("\n"))){ //this is to check for single characters
                System.out.println(line.charAt(posSec+1)+"hello");
                 thirdArgs= line.substring(posSec+1,posSec+2);
                 afterHyp=line.substring(posSec+2);
            }
            else{
            int posThirdBrack = line.indexOf("{", posSec);
            int posThird = checkNestedBrackFront(line, posThirdBrack+1);
            thirdArgs = line.substring(posThirdBrack+1,posThird);
            afterHyp = line.substring(posThird+1);
            }
            line=beforeHyp+"\\HyperpFq{7}{6}@@{"+firstArgs+"}{"+secArgs+"}{"+thirdArgs+"}"+afterHyp;
        }
      writer.print(line);
    writer.close();

a little bit confusing , but as I understood you wan to detect a new line : 有点令人困惑,但是据我了解,您希望检测到一条新线:

 PrintWriter writer = new PrintWriter("Converted.tex");
        Scanner scanner = new Scanner(new File("KLSadd.txt"))
                .useDelimiter("\n");
        while (scanner.hasNext()) {
        String  lne = scanner.next();
        String[] lines =  lne.split("YOUR DELIMETER");
        for(int j=0;j<lines.length;j++){
            line = lines[j];
            //the rest of your logic  goes here
            }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM