检查字符串中的特定字符

时间:2013-04-19 11:48:43

标签: java string bufferedreader parseint

我有以下代码读取一个文件,该文件具有单个数字格式的3个整数,或者x / y,其中x是一个整数,为y。

我正在尝试读取文件,然后在每个空格处拆分以隔离字符串的每个部分,最后使用“parseInt”将它们转换为整数。到目前为止我已经

BufferedReader br = new BufferedReader(new FileReader("input1.txt"));

            String line = br.readLine();

            while (line != null){
                String[] lines = line.split(" ");

我认为在此之后它应该看起来像这样的例子

行[0] = 4

行[1] = 4/2

看看这个我假设我可以使用行[1]等解析每个部分

所以我的问题是如何检查“/”,因为如果它有破折号我将无法使用parseInt。我假设类似if语句,如果行有“/”等...但我不确定语法,

任何帮助将不胜感激,

此致

詹姆斯

5 个答案:

答案 0 :(得分:3)

lines数组中的Foreach元素使用String.Contains()方法检查String是否包含“/”。如果返回true,则使用“/”作为分隔符执行另一次拆分。然后,您将拥有一个x和y值的数组,可以将其解析为整数。

答案 1 :(得分:0)

有这种方法可以帮助您:String.indexOf()

    int slashIndex = line.indexOf('/');
    if (slashIndex != -1) {
        double x = Double.parseDouble(line.substring(0, slashIndex));
        double y = Double.parseDouble(line.substring(slashIndex + 1));
        double value = x / y;
        System.out.println(line + " = " + value); // or else...
    }

答案 2 :(得分:0)

试试这个:

String line ="";

while ((line=br.readLine())  != null){
    if(line.contains("/")){
        String[] lines = line.split("/");
        //parse 
    }
    else{ 
        String[] lines = line.split(" ");
        //parse 
    }
}

答案 3 :(得分:0)

您无需检查是否可以直接使用replace or replaceAll

str.replaceAll("/", "");

顺便说一下你的循环不会按原样运行,你需要为每一轮调用br.readLine()

while ((line = br.readLine()) != null){
  for (String ln: line.split(" ")){
    try{
      anyIntVar = Integer.parseInt(ln.replaceAll("/", ""));
      // ...
    }catch (NumberFormatException nfe){
      // handle exception
    }
  }
}

答案 4 :(得分:0)

您可以使用contains方法检查该行是否包含“/”,如果您找到它,可以使用“/”拆分此行,如下所示:

String s = "4/2";
if (s.contains("/")) {
   String[] split = s.split("/");
   int x = Integer.parseInt(split[0]);
   int y = Integer.parseInt(split[1]);

}