繁体   English   中英

用Java拆分字符串并提取其中的一部分

[英]Split a string in Java and picking up a part of it

说我从类似的文本文件中得到了一个字符串

“是的ABC 123

是的456

是的GHI 789“

我使用此代码按空格分割字符串。

while (inputFile.hasNext())
  {
     String stuff = inputFile.nextLine();

     String[] tokens = stuff.split(" ");

     for (String s : tokens)
     System.out.println(s);
  }

但我也想将Yes分配给布尔值,将ABC分配给另一个字符串,将123分配给int。 我怎样才能分别拿起它们? 谢谢!

boolean b=tokens[0].equalsIgnoreCase("yes");
String name=tokens[1];
int i=Integer.parseInt(tokens[2]);

您能说明您正在做的确切目的是什么吗? 您可以用tokens [i]引用单独的字符串,其中i是索引。 您可以将它们放入switch语句(自Java 7起)中,并匹配您要查找的单词。 然后,您可以采取进一步的措施,即将字符串转换为布尔值或整数。

即使您希望文件始终将这3个单词用空格隔开,您也应该考虑检查输入是否有效。

创建Class LineList<Line>将所有文件存储到列表中:

public class Line{

private boolean mFlag = false;
private int  mNum = 0;
private String  mStr;

public Line(String stuff) {
    String[] tokens = stuff.split("[ ]+");

    if(tokens.length ==3){
        mFlag=tokens[0].equalsIgnoreCase("yes");
        mNum=Integer.parseInt(tokens[1]);
        mStr=tokens[3];
    }
}
}

并称之为:

public static void main(String[] args) {

 List<Line> list = new ArrayList<Line>(); 
 Line line;

 while (inputFile.hasNext())
 {
  String stuff = inputFile.nextLine();

  line = new Line(stuff);

  list.add(line);
 }
}

如果您输入的String将始终采用相同的格式,即booleanStringint则可以访问token数组的各个索引并将其转换为指定的格式

boolean opinion = tokens[0].equalsIgnoreCase("yes");
String temp = token[1];
int i = Integer.parseInt(token[2])

但是您可能需要创建一个数组或存储用户执行的连续输入的值的东西,否则对于用户的每个新输入,这些变量将被覆盖。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM