【问题标题】:Comparing clipboard contents to a string with a "\n" in it -Java将剪贴板内容与其中带有“\ n”的字符串进行比较-Java
【发布时间】:2017-02-28 07:23:06
【问题描述】:

我正在读取一个 txt 文件,然后将其转换为一个字符串。 我在根据包含“\n”的字符串检查剪贴板内容时遇到问题。如果剪贴板内容中包含换行符,则不会检查是否与字符串内容匹配。假设我复制以下内容: “你好 那里” 这并不等同于字符串中已有的相同内容。代码如下。 是否可以正确检查?如果有怎么办?如果没有,我可以检查文本文件,同时仍然确保我保留格式,因为需要 \n 来保留格式以供以后使用。

            BufferedReader clipboardStorageReader = new BufferedReader(clipboardStorageFile);
            String clipboardStorageResponses = new String();

            try {
                for (String line; (line = clipboardStorageReader.readLine()) != null;){
                    if(line.contains(",,,")){
                        clipboardStorageResponses += line;
                    }else {
                        clipboardStorageResponses += line + "\n";
                        }
                }
            } catch (IOException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }
            System.out.println(clipboardStorageResponses);
            if (clipboardStorageResponses.contains(result)) {

                System.out.println("Fail");
            }

我正在制作一个程序,该程序至少可以保存我复制的最后 50 件东西,以供以后使用。显示这是一个 JScrollPane,因此我可以剪辑一个 GUI 以将其放回剪贴板上。只是试图避免任何重复。

【问题讨论】:

  • 用你的调试器逐步完成这个,找出从clipboardStorageFile返回的确切的String,然后修改你的代码来检查。
  • 创建一个简单的文本组件,例如 jtextField 并设置剪贴板内容,然后进行 comparison
  • 出于某种愚蠢的原因,在 .replace 上完全忽略了海峰的回答。

标签: java string clipboard


【解决方案1】:

你可以删除换行符

line = line.trim(); // returns a copy of the string, with leading and trailing whitespace omitted. 

或者你可以用空字符串替换它:

line = line.replace("\n", "").replace("\r", "");

【讨论】:

  • 谢谢我出于某种原因完全忽略了这一点。 .replace 结果并摆脱了剪贴板存储响应字符串上的 +"\n" ,而不是您建议的 line 变量。这让我可以正确检查。
猜你喜欢
  • 2023-03-03
  • 1970-01-01
  • 1970-01-01
  • 2011-01-21
  • 1970-01-01
  • 2017-02-20
  • 2010-10-06
  • 2012-08-31
  • 1970-01-01
相关资源
最近更新 更多