gpt4 book ai didi

java - 如何改进 2 列的字符串解析器方法(读取一行上的 2 个字符串)

转载 作者:行者123 更新时间:2023-12-01 18:34:55 25 4
gpt4 key购买 nike

public class testing_string {


public static void read_doc_word(String line){
String doc_id = "" ;
String word_id = "" ;
boolean doc_id_ends = false ;
for(int i = 0 ; i < line.length() ; i++){
if(line.charAt(i) == 9) doc_id_ends = true ; // 9 is TAB in asci
else if(doc_id_ends == false) doc_id += line.charAt(i) ;
else if( doc_id_ends == true) word_id += line.charAt(i) ;
}

System.out.println("doc id " + doc_id ) ;
System.out.println("word id " + word_id ) ;

}
public static void main(String[] args) {
String x = "1 29" ;
read_doc_word(x) ;
}

}

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

我该怎么做:

  • 在制表符之前读取整个字符串
  • 跳过标签
  • 在制表符后读取整个字符串

或者唯一的方法是检查每个字符? (就像我一样)我想避免检查每个字符!

最佳答案

您应该使用String.split()

请引用this文档。

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

    public static void read_doc_word(String line){             
String doc_id = "" ;
String word_id = "" ;
String[] split ;

split = line.split("\\t");

if(split.length==2){
doc_id = split[0];
word_id = split[1];
}

System.out.println("doc id " + doc_id ) ; \\ 1
System.out.println("word id " + word_id ) ; \\29

}

请注意,为了按制表符分割,您需要使用正则表达式"\\t",而不仅仅是"\t"

关于java - 如何改进 2 列的字符串解析器方法(读取一行上的 2 个字符串),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22422092/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com