Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何改进2列的字符串解析器方法(一行读取2个字符串) 公共类测试\u字符串{ 公共静态无效读取文档字(字符串行){ 字符串doc_id=“”; 字符串单词_id=“”; 布尔值doc_id_ends=false; 对于(int i=0;i_Java_String_Io - Fatal编程技术网

Java 如何改进2列的字符串解析器方法(一行读取2个字符串) 公共类测试\u字符串{ 公共静态无效读取文档字(字符串行){ 字符串doc_id=“”; 字符串单词_id=“”; 布尔值doc_id_ends=false; 对于(int i=0;i

Java 如何改进2列的字符串解析器方法(一行读取2个字符串) 公共类测试\u字符串{ 公共静态无效读取文档字(字符串行){ 字符串doc_id=“”; 字符串单词_id=“”; 布尔值doc_id_ends=false; 对于(int i=0;i,java,string,io,Java,String,Io,} 输入:每行有2个数字。 有什么更好的方法? 我想避免丑陋的“doc_id+=line.charAt(I)”, 将每个字符连接到字符串 我如何做到这一点: 在制表符之前读取整个字符串 跳过选项卡 阅读整个stringafter选项卡 或者唯一的方法是检查每个字符?(就像我做的那样)我希望避免检查每个字符 您正在寻找 示例(将逗号替换为制表符): 你在找什么 示例(将逗号替换为制表符): 所有空格上的字符串,包括选项卡: public static void main(String[] ar

}

输入:每行有2个数字。 有什么更好的方法? 我想避免丑陋的“doc_id+=line.charAt(I)”, 将每个字符连接到字符串

我如何做到这一点:

  • 在制表符之前读取整个字符串
  • 跳过选项卡
  • 阅读整个stringafter选项卡
或者唯一的方法是检查每个字符?(就像我做的那样)我希望避免检查每个字符

您正在寻找

示例(将逗号替换为制表符):

你在找什么

示例(将逗号替换为制表符):

所有空格上的
字符串
,包括选项卡:

public static void main(String[] args) {
    String example = "1,29";
    String[] splitted = example.split(",");

    System.out.println(splitted[0]); // 1
    System.out.println(splitted[1]); // 29
}
所有空格上的
字符串
,包括选项卡:

public static void main(String[] args) {
    String example = "1,29";
    String[] splitted = example.split(",");

    System.out.println(splitted[0]); // 1
    System.out.println(splitted[1]); // 29
}
在Java 8中:

public static void read_doc_word(String line){       
    String[] tokens = line.split("\\s+");
    System.out.println("Doc ID:" + tokens[0]);
    System.out.println("Word ID:" + tokens[1]);
}
更严重的是,您可以在选项卡上拆分:

public static void main(final String[] args) throws Exception {
    final Path path = Paths.get("path", "to", "my", "document");
    Files.lines(path).map((l) -> l.split("\t")).forEach((s) -> {
        System.out.println("doc id " + s[0]);
        System.out.println("word id " + s[1]);
    });
}
还值得注意的是,您应该永远不要在循环中进行
字符串
串联
。这是。因此,即使没有
String.split
方法,您的方法仍然可以改进。

在Java 8中:

public static void read_doc_word(String line){       
    String[] tokens = line.split("\\s+");
    System.out.println("Doc ID:" + tokens[0]);
    System.out.println("Word ID:" + tokens[1]);
}
更严重的是,您可以在选项卡上拆分:

public static void main(final String[] args) throws Exception {
    final Path path = Paths.get("path", "to", "my", "document");
    Files.lines(path).map((l) -> l.split("\t")).forEach((s) -> {
        System.out.println("doc id " + s[0]);
        System.out.println("word id " + s[1]);
    });
}

还值得注意的是,您应该永远不要在循环中进行
字符串
串联
。这是。因此,即使没有
String.split
方法,您的方法仍然可以改进。

您应该使用
String.split()

请参阅文件

因此,您的代码可以修改如下:

public static void read_doc_word(final String line){             
    final String[] split = line.split("\t");
    final String doc_id = split[0] ;
    final String word_id = split[1] ;
    System.out.println("doc id " + doc_id ) ;
    System.out.println("word id " + word_id ) ;    
}

请注意,要按制表符拆分,您需要使用正则表达式
“\\t”
,而不仅仅是
“\t”

,您应该使用
String.split()

请参阅文件

因此,您的代码可以修改如下:

public static void read_doc_word(final String line){             
    final String[] split = line.split("\t");
    final String doc_id = split[0] ;
    final String word_id = split[1] ;
    System.out.println("doc id " + doc_id ) ;
    System.out.println("word id " + word_id ) ;    
}

请注意,要按制表符拆分,您需要使用正则表达式
“\\t”
,而不仅仅是
“\t”

@ERJAN它目前仍处于测试阶段,将于本月发布。@ERJAN它目前仍处于测试阶段,将于本月发布。