【问题标题】:String.split issue in listViewlistView 中的 String.split 问题
【发布时间】:2013-05-25 07:12:57
【问题描述】:

我正在尝试将文本文件的内容读入列表视图。 文本文件格式为

Item 1
Subitem1 | Subitem2 | Subitem3

Item 2 
Subitem1 | Subitem 2 | Subitem3

Item 3
Subitem1 | Subitem2 | Subitem3

这是我使用的逻辑。 搜索特定项目的文件

  while(scanner.hasNextLine())
  {    
     line=scanner.next line();
     if(query.equals(line))
     line = scanner.next line();
  }
  return line;

取返回的行值,拆分成String[]

  String[] myArray = returnedLine.split("|");

将其转换为列表视图的列表

  List<String> disp = new ArrayList<String>();
  disp = Arrays.as list(myArray);

代码有效。但是,列表视图的内容看起来很奇怪,每个字母都在一个新的 listView 行中。 S在一行,u在下一行,然后是b、I、t、e、m和1。全部在不同的行

【问题讨论】:

  • 另外,我刚刚查过了。无论查询字符串是什么,返回值始终是文件的最后一行,即第 3 项的子项
  • 我必须在scanner.nextLine(); 之后添加中断因为我希望退货是项目之后的行
  • 编辑:不。 Break 不能解决问题
  • 你确定这是你想要做的吗?当您找到与查询匹配的行时,您不想退出吗?如果没有您的所有代码,很难确定您在做什么,但无论如何,您现有的代码会冒NoSuchElementException 的风险,因为您调用scanner.nextLine() 而没有检查scanner.hasNextLine() 是否第二次调用scanner.nextLine()跨度>

标签: android arrays string list listview


【解决方案1】:

String.split() 函数接受正则表达式,而不是字符,管道是正则表达式中的特殊字符。试试这个:

String[] myArray = returnedLine.split("\\|");

编辑:作为飞行计划者的指针,你的 while 应该看起来像这样:

while(scanner.hasNextLine())
{    
    line=scanner.next line();
    if(query.equals(line)) {
        line=scanner.next line();
        break;
    }
}

【讨论】:

  • 另外一个问题呢?它总是返回文件的最后一行
  • 见飞行计划者的评论。您可能只想在 while() 语句中调用scanner.nextLine() 一次。
  • 基本上,字符串查询将是,例如,项目1。当它找到它时,它应该读取下一行@DevOfZot
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-08
  • 2012-06-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多