在java中,如何在括号和单引号之间添加空格?

在java中,如何在括号和单引号之间添加空格?,java,string,Java,String,我正在尝试转换以下字符串 插入表格01值('abcd01'、'abcd02'、'abcd03') 到 插入表格01值('abcd01','abcd02','abcd03') 我的代码: package layout; public class String02 { public String Replace01(String testString) { String string01 = ""; string01 = testStr

我正在尝试转换以下字符串

插入表格01值('abcd01'、'abcd02'、'abcd03')

插入表格01值('abcd01','abcd02','abcd03')
我的代码:

package layout;
public class String02 {
    public String Replace01(String testString) {
        String string01 = "";
        string01 = testString.replaceAll("\\('", "\\(  ");
        string01 = testString.replaceAll("\\)", "  \\)");
        string01 = testString.replaceAll(",", ", ");
        return string01;
    }
    public static void main(String[] args) {
        String02 app = new String02();
        String testString = "Insert into table01 values('abcd01','abcd02','abcd03')";
        String s1 = app.Replace01(testString);
        System.out.println(s1);
    }
}

您可以使用regex
('(?=\\)\124;\\、\ 124;\()
和捕获组引用
$1
以及
replaceAll()
方法:

String testString = "Insert into table01 values('abcd01','abcd02','abcd03')";
String string01 = testString.replaceAll("('(?=\\))|\\,|\\()", "$1 ");
System.out.println(string01);
  • (…)
    :捕获组
  • $1
    :捕获组参考
  • |
    :或运算符
  • (?=…)
    :在
    之前对捕获
    进行正向前瞻
输出:

字符串是不可变的。由于每个replaceAll()语句都会返回一个新字符串,因此无法继续对原始字符串进行操作

代码应为:

    string01 = testString.replaceAll("\\('", "\\(  '");
    string01 = string01.replaceAll("\\)", "  \\)");
    string01 = string01.replaceAll(",", ", ");

此外,您的第一个replaceAll(…)语句不正确,因为您在替换字符串中遗漏了

错误主要是您没有使用
string01
进行第二次和第三次替换, 但是原始的
testString
。(
replace(All/First)
不会更改字符串本身,但会生成一个新字符串)。 因此,第一次和第二次替换丢失

这样就不需要正则表达式替换。你可以这样写:

    string01 = testString.replace("('", "( '")
                         .replace(")", " )")
                         .replace("','", "', '");

如果你对正则表达式有困难,请考虑回到基础。

公共类String02{
公共字符串替换01(字符串测试字符串){
字符串string01=“”;
char ch;

对于(int i=0;i您还可以使用lookarounds查找特定位置,在替换中使用单个空格

(?<=\(|',)(?=')|(?<=')(?=\))
输出

Insert into table01 values( 'abcd01', 'abcd02', 'abcd03' )

“代码”> RePATALL(“\”、“\”)/代码>应该是“代码> RePATALL”(“\”(\)\“\”)/代码>否则,在第一个值之前丢失了单个引用。BTW:这不是一个应该用正则表达式解决的问题,考虑一下发生了什么,例如-<代码>插入Table 01值(“ABCD(01)”、“ABCD02”、“ABCD03”)。
您提出了多个问题,但没有一次“接受”并回答。请参阅:
(?<=\(|',)(?=')|(?<=')(?=\))
String s = "Insert into table01 values('abcd01','abcd02','abcd03')";
String result = s.replaceAll("(?<=\\(|',)(?=')|(?<=')(?=\\))", " ");
System.out.println(result);
Insert into table01 values( 'abcd01', 'abcd02', 'abcd03' )