Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/358.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 搜索字符串中的单引号并用其他字符将其换行_Java_Regex - Fatal编程技术网

Java 搜索字符串中的单引号并用其他字符将其换行

Java 搜索字符串中的单引号并用其他字符将其换行,java,regex,Java,Regex,我正在尝试解析csv文件,并在 这个过程遇到了一些问题 包含单引号的条目。我已经编写了以下正则表达式来匹配多个单引号的匹配,如果该方法返回true,我计划将其包装为另一组字符 然而,我没有得到正确的答案 输出 下面是伪代码: public boolean containsChar() { String inputStr= "Niel O' Brian"; Pattern pattern = Pattern.compile("/'+");

我正在尝试解析csv文件,并在 这个过程遇到了一些问题 包含单引号的条目。我已经编写了以下正则表达式来匹配多个单引号的匹配,如果该方法返回true,我计划将其包装为另一组字符 然而,我没有得到正确的答案 输出

下面是伪代码:

public boolean containsChar()
    {

        String inputStr= "Niel O' Brian";

            Pattern pattern = Pattern.compile("/'+");
            Matcher matcher = pattern.matcher(inputStr);
            boolean matchFound = matcher.matches();

            return matchFound;
    }

你需要删除正斜杠。现在您正在搜索一个
/
,后跟一个或多个单引号

另外,
matches()
检查整个字符串,您希望改为
find()

。。。我已经编写了以下正则表达式来匹配多个单引号匹配

regex
'+
也匹配一个引号。要匹配多个引号,请使用
'+
或等效的
'{2,}

但如果你只想找到两个单引号,我会同意彼得的建议。我将留下我的答案,因为它解释了您的
匹配()失败的原因。

我只想使用

String inputStr= "Niel O' Brian";
return inputStr.contains("'"); // same as your expression.
return inputStr.contains("''"); // I suspect this is what you are looking for.
如果您有两个连续的单引号,您可能希望将其替换为一个

return inputStr.replaceAll("''", "'");
如果有一个带双引号的单引号,则可能需要将整个字符串置于双引号中

public static String quote(String text) {
    if (text.contains("\"")
        return '"' + text.replaceAll("\"", "\"\"") + '"';
    if (text.contains(",") || text.contains("'"))
       return '"' + text + '"';
    return text;
}

像Excel一样在整个字段周围加上双引号要整洁得多。

您可以得到正确的输出。但也许这不是你所期望的。试着详细说明一下。据我所见,你试图匹配一个斜杠,后跟一个或多个撇号。阿哈尼奥,你能给我们你想要返回的字符串吗?@Martijn我用我的输出更新了这个问题expecting@ahaneo:在哪里?我仍然无法看到您期望作为输出的字符串。你能给Niel O’Brian举个例子吗?他想得到真实的返回-但是,他想要正确的答案,这是错误的。我的csv最终消费者无法处理字符串中的单引号,因此我试图将单引号括在两个双引号之间,contains方法是否比regexp更有效,我之所以问这个问题,是因为我的输入csv包含100多列和数千行,所有这些记录都需要通过上述方法进行验证哦,是的,除非程序真的太慢,否则我不会太担心性能。@ahaneo,请看我添加的如何格式化写入CSV的单元格。Pattern=Pattern.compile(“+”);当与matches()方法一起使用时返回false,而与find()方法一起使用时返回true我想知道为什么会出现这种差异引号:
matches()
:“”和
find()
:“”谢谢@Bart的解释