当前位置: 首页 > 面试题库 >

无法解析^字符

宋高扬
2023-03-14
问题内容

好的,现在我可以解析空间了,这是我以前的问题。现在我的解析器几乎可以使用了,但是有一个我无法弄清的缺陷。

我能够在段(参见代码)和管道之间的数据之后检索数据。我无法到达的是一个级别并检索包含在管道之间并以^分隔的数据。

例如。

Input String is A|1|2|3^4|
Expected Output
element1        A
element2        1
element3        2
element4.1      3
element4.2      4

但是,我当前的输出将是

element1        A
element2        1
element3        2
element4       3^4

我收到@后面带有各种ID的异常1 [Ljava.lang.String; @ 1786e64

下面给出的注释代码造成了问题。

码:

Scanner scanner = new Scanner(System.in);
str=scanner.nextLine();
System.out.println(str);
segments="(A)|(B)|(C)|(D)";
pipe="[\\s+\\|+\\+]";
carat="[\\^+]";
for(i=0;i<token_type1.length;i++)
{
token_type2=token_type1[i].toString().split(pipe);
for(j=0;j<token_type2.length;j++)
{           
/*
token_type3=token_type2.toString().split(carat);    
for(k=0;k<token_type3.length;k++)
System.out.println("\t"+(k+1)+" "+token_type3[k]);
*/
System.out.println((j+1)+"\t"+token_type2[j]);
}
System.out.println();
}

请指教。


问题答案:

这会将您的输入转换为所需的输出(将类保存在两个不同的文件中)

解析器

public class Parser {

    public static final String ELEMENT_DELIM_REGEX = "\\|";

    public static void main(String[] args) {
        String input = "A|1|2|3^4|";
        String[] tokens = input.split(ELEMENT_DELIM_REGEX);
        Element[] elements = new Element[tokens.length];
        for (int i = 0; i < tokens.length; i++) {
            elements[i] = new Element(i + 1, tokens[i]);
        }
        for (Element element : elements) {
            System.out.println(element);
        }
    }

}

Element.java

public class Element {

    public static final String SUB_ELEMENT_DELIM_REGEX = "\\^";

    private int number;

    private String[] content;

    public Element(int number, String content) {
        this.number = number;
        this.content = content.split(SUB_ELEMENT_DELIM_REGEX);
    }

    @Override
    public String toString() {
        if (content.length == 1) {
            return "Element " + number + "\t" + content[0];
        }
        StringBuilder str = new StringBuilder();
        for (int i = 0; i < content.length; i++) {
            str.append("Element " + number + "." + (i+1) + "\t" + content[i] + "\n");   
        }
        // Delete the last \n
        str.replace(str.length() - 1, str.length(), "");
        return str.toString();
    }
}


 类似资料:
  • 代码运行,但无法获得函数、类等的建议。 谢谢

  • 我有一个这样的字符串,当我试图解析它时,它出现在JSON < code > processing data call \ \ u 007 fabc computers 中,jackson抛出一个这样的异常: 我认为问题的发生是因为。它在UTF-8中绝对有意义。知道如何避免这个问题吗?执行在这里有什么帮助吗?

  • 问题内容: 这是我在JSP文件中的Java代码。我正进入(状态 无法解析Base64Encoder。 为什么会这样呢?我必须添加与相关的内容。任何建议将不胜感激。 问题答案: 看起来您正在使用Web应用程序中包含的jar中不存在的类。您可以尝试以下吗?如有必要,请进行调整,我只是在查看通用文档,然后将其输入- 转到http://commons.apache.org/codec/index.html

  • 问题内容: 因此,我直接从Google的android网站复制了此教程示例内容,却收到一个错误,指出R.id无法解决。 这是我的Java文件 这是我的 问题答案: 您必须导入您的R类 同样,如需求发布一样,您必须为布局使用名称空间。

  • 问题内容: 之前一切正常。然后,我碰巧将一个新的xml文件添加到布局中。现在,当setContentView指向(R.layout.menu)时,我的一个类给出了错误。Eclipse告诉我R.layout.menu无法解析。我不知道为什么。我在布局文件夹中定义了一个称为菜单的布局。 有什么建议? 问题答案: 您是否执行过项目>清洁?有时,您只需要让Eclipse重新生成R文件即可。