【问题标题】:Reading a java program读一个java程序
【发布时间】:2019-07-26 20:12:25
【问题描述】:

我正在尝试读取一个 java 程序。

我正在使用这行代码。

String[] words = line.split(" ");

它是否也拆分';'来自之前的变量名?

举例

int x = test;

怎么拆分,SPLIT那个?

【问题讨论】:

  • 试试看有没有。
  • int x = test 对不起,这是什么?你是什​​么意思拆分字符串如何影响 integer
  • 请注意,“标记化”Java 程序是一个相当复杂的过程,不能仅通过简单的 split 调用来完成。
  • 为什么要在 ; 拆分 - 计算机按照您 命令 的方式执行操作,而不是您希望它们执行的操作 - 您在任何地方都没有指定 ;(顺便说一句,正如 greg 所写,这不是微不足道的,很多空格是可选的,例如int x=test;(没有空格相等)是有效的)
  • 如果有 2 个空格?它会将空间也拆分为字符串吗?

标签: java arrays eclipse file


【解决方案1】:

如果该行是 int x = test; 并且您指定了 line.split(" "),它将在 " " 字符(空格)处拆分,所以

words=["int","x","=","test;"]

您在 split 方法中指定要在其上拆分行的字符。因此,如果我的线路是 "Hi#I'm;#Bob" 而我运行的是 String[] words = line.split("#"),结果将是

words = ["Hi","I'm;",Bob"]. 

除非您指定,否则它不会影响 ';' 字符

【讨论】:

    【解决方案2】:

    不,line.split(" ") 只用空格字符分隔每个单词。在你的情况下,

    int x = test;
    

    空格字符在“int”和“x”、“x”和“=”、“=”和“test;”之间,所以输出将是,

    word[0]="int";
    word[1]="x";
    word[2]="=";
    word[3]="test;";
    

    如果要同时按空格和分号进行分割,则使用正则表达式,

    String[] words = line.split("[ ;]");
    

    【讨论】:

    • 为什么是反斜杠?
    • 你从哪里得到的?请链接该教程! 20 多年了,我从来没有听说过,一直认为这是为了逃避特殊字符(比如 \\. 得到一个点,或者 \\-[] 内) - 不需要在 [] 内进行 OR - 他们实际上表示任何列出的字符(或在给定范围内 - {OR is |} 但在 []s 之外)
    • 而且,顺便说一句,我更喜欢官方文档:Pattern - 请检查一下
    • 还是错了,因为我已经写了“[]内不需要OR”,实际上上面的代码现在在空格、分号和|
    • 如果有 2 个空格?它会将空间也拆分为字符串吗?
    猜你喜欢
    • 1970-01-01
    • 2013-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-21
    相关资源
    最近更新 更多