Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.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 如何在文件中选择字符串after=运算符?_Java - Fatal编程技术网

Java 如何在文件中选择字符串after=运算符?

Java 如何在文件中选择字符串after=运算符?,java,Java,我有一个包含以下文本的文件: CompanyName=IBM Name=User1234 CompanyName=Google 如何检查文本文件中是否存在文本“CompanyName”,如果存在,则在=operator?之后选择一个字符串?。所以上面文件中的文本应该输出IBM和Google while ((line = br.readLine()) != null) { System.out.println(line); }

我有一个包含以下文本的文件:

CompanyName=IBM
Name=User1234
CompanyName=Google
如何检查文本文件中是否存在文本“CompanyName”,如果存在,则在=operator?之后选择一个字符串?。所以上面文件中的文本应该输出IBM和Google

            while ((line = br.readLine()) != null) {

            System.out.println(line);

        }

您可以使用
java.util.Properties

Properties properties = new Properties();
properties.load(new InputStreamReader
        (new FileInputStream("myprops.properties"), StandardCharsets.UTF_8));
String property = properties.getProperty("CompanyName");

是这样的吗

while ((line = br.readLine()) != null) {

    System.out.println(line);

    if(line.contains("CompanyName"))
    {
        String[] splits = line.split("=");
        String desired = splits[1]; // second position in the string array.
    }
}
编辑:在同时获取其他字段时添加更多功能

while ((line = br.readLine()) != null) 
        {
            System.out.println(line);
            String compName = "";
            String name = "";
            if(line.contains("CompanyName"))
            {
                String[] splits2 = line.split("=");
                compName = splits2[1]; // second position in the string array.
                if((line = br.readLine()) != null) 
                {
                    String[] splits = line.split("=");
                    name = splits[1];
                }
            }
        }

以下是您如何做到这一点:

function findValueOfAttr(String attr, br) {

  while ((line = br.readLine()) != null) {

  if (line.indexOf(attr) == 0)
     return line.subString(line.indexOf("=")+1);
   }

  return false;

}

有几个选项:A)正则表达式;b) indexOf和substring…您需要读取所有行(或逐行)并进行搜索比较。我建议使用
String result=line.split(“=”,2)[1]以获得第二部分。@JonSkeet是否可以获得一个小示例?不,您应该接受这些提示并亲自尝试。目前你没有表现出任何努力-没有迹象表明你已经尝试了什么,出了什么问题,等等。你能解释一下IF循环吗?这行(line.indexOf(attr)==0)是什么意思?在哪里检查CompanyName文本是否等于?假设属性为“CompanyName”。然后if循环将检查字符串“companyName”在当时的位置。如果它位于位置0(表示行的开头),则该属性存在。接下来,为了得到这个值,我得到了等号的位置,加上1,然后取行的其余部分并返回它。我有一个后续问题。假设我这次在上面的if循环之后添加了另一个if循环来检查ProductCode文本。是否有一种方法可以将第一个if循环的输出与第二个if循环的输出结合起来,因此结果应该是:IBM 1111(IBM是一个公司名称,1111是一个产品代码)Google 2222当然,请给我一分钟时间写出来是的,这看起来不错,但有一个问题,您在哪里检查代码中的产品代码文本。我可以看到您正在检查的公司名称文本?不小心忘记在if语句中添加()。这就是为什么会出现不兼容类型错误。我在你的问题中没有看到任何与ProductCode文本相关的内容。你能澄清一下吗?如果我想在同一个文件中搜索ProductCode文本并将结果与CompanyName结合起来,我该怎么做?因此,搜索两个文本并在最后打印结果