请问如何将一串字符串中的英文引号转变成中文的引号,要考虑前后

时间:2022-12-07 10:30:59
如这样一串字符串 【实现要转移的字符把"单引号"变成"双引号"】

用java如何才能把其中的英文双引号变成中文的呢?要考虑前后引号,前面的是“,后面的是”。
返回结果:【实现要转移的字符把“单引号”变成“双引号”】

12 个解决方案

#1


有点难度,万一你英文引号漏了一个咋办?

#2



//Sample

import java.util.regex.*;

public class RegexSample {

    /**
     * @param args
     */
    public static void main(String[] args) {
        
        String regex = "\"\\w*?\"";//正则表达式匹配串
        String str,str2;
        String strOri = "haha\"123\"hehe\"4567\"hihi";//待处理字符串
        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(strOri);
        while(matcher.find())
        {
            str = matcher.group();
            str2 = str;
            str2 = str2.replaceAll("\"", "");//去掉前后引号
            str2 = "“"+str2+"”"; //前后添上中文引号
            strOri = strOri.replace(str, str2);            
        }
        System.out.println(strOri);//输出结果

    }

}

#3



//package com.ricky.www;
/*
如这样一串字符串 【实现要转移的字符把"单引号"变成"双引号"】

用java如何才能把其中的英文双引号变成中文的呢?要考虑前后引号,前面的是“,后面的是”。
返回结果:【实现要转移的字符把“单引号”变成“双引号”】
*/

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Test{
public static void main(String[] args){
String content = "【实现要转移的字符把\"单引号\"变成\"双引号\"】";
String result = process(content);
}

public static String process(String content){
String regex = "(.*)\"(.*)\"(.*)";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(content);

while(matcher.find()){
content = matcher.group(1) + "“" + matcher.group(2) + "”" + matcher.group(3);
matcher = pattern.matcher(content);
}

System.out.println(content);

return content;
}
}

#4


确实有难度,不说引号少写不少写。如果引号中套用引号了。

比如: 比如"引号中间在有["引号"]的话"这样就能难处理了。

#5


引号中有引号是不符合规范的,双引号中应该套单引号,所以这个不用担心。

#6


引用 4 楼 closewbq 的回复:
确实有难度,不说引号少写不少写。如果引号中套用引号了。

比如:比如"引号中间在有["引号"]的话"这样就能难处理了。

是啊。

#7


楼上有几位想的太复杂了,当然证明几位考虑周到啊
其实我的问题就是排除了引号缺失和引号嵌套问题的,加上这些不确定性大了,但其实也不符合中文规范了,暂时先不考虑吧。

另外解法就只有楼上两位提供的了吗?

#8


String orginal= "\"haha\"123\"hehe\"4567\"hihi\"";
String replaced = orginal.replaceAll("\"(.*?)\"", "“$1”");

#9


新手来学习 相信不久后我就能与诸位探讨问题了

#10


引用 8 楼 zhuzeitou 的回复:
Java code
String orginal= "\"haha\"123\"hehe\"4567\"hihi\"";
String replaced = orginal.replaceAll("\"(.*?)\"", "“$1”");

你试试这个String s = "\"\"haha\"123\"hehe\"4567\"hihi\"\"";

#11


引用 8 楼 zhuzeitou 的回复:
Java code
String orginal= "\"haha\"123\"hehe\"4567\"hihi\"";
String replaced = orginal.replaceAll("\"(.*?)\"", "“$1”");

8楼正解,学习了

String orginal= "\"\"haha\"123\"hehe\"4567\"hihi\"\"";
String replaced = orginal.replaceAll("\"(.*)\"", "“$1”");
String s = replaced.replaceAll("\"(.*?)\"", "“$1”");
System.out.println(replaced);
System.out.println(s);

#12


根据语文标点规范。

双引号中若有引号,其中的引号应该使用单引号,若单引号中再有引号,应使用双引号,也就是这样的:

"abc 'abc "123" defg' defg"

#1


有点难度,万一你英文引号漏了一个咋办?

#2



//Sample

import java.util.regex.*;

public class RegexSample {

    /**
     * @param args
     */
    public static void main(String[] args) {
        
        String regex = "\"\\w*?\"";//正则表达式匹配串
        String str,str2;
        String strOri = "haha\"123\"hehe\"4567\"hihi";//待处理字符串
        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(strOri);
        while(matcher.find())
        {
            str = matcher.group();
            str2 = str;
            str2 = str2.replaceAll("\"", "");//去掉前后引号
            str2 = "“"+str2+"”"; //前后添上中文引号
            strOri = strOri.replace(str, str2);            
        }
        System.out.println(strOri);//输出结果

    }

}

#3



//package com.ricky.www;
/*
如这样一串字符串 【实现要转移的字符把"单引号"变成"双引号"】

用java如何才能把其中的英文双引号变成中文的呢?要考虑前后引号,前面的是“,后面的是”。
返回结果:【实现要转移的字符把“单引号”变成“双引号”】
*/

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Test{
public static void main(String[] args){
String content = "【实现要转移的字符把\"单引号\"变成\"双引号\"】";
String result = process(content);
}

public static String process(String content){
String regex = "(.*)\"(.*)\"(.*)";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(content);

while(matcher.find()){
content = matcher.group(1) + "“" + matcher.group(2) + "”" + matcher.group(3);
matcher = pattern.matcher(content);
}

System.out.println(content);

return content;
}
}

#4


确实有难度,不说引号少写不少写。如果引号中套用引号了。

比如: 比如"引号中间在有["引号"]的话"这样就能难处理了。

#5


引号中有引号是不符合规范的,双引号中应该套单引号,所以这个不用担心。

#6


引用 4 楼 closewbq 的回复:
确实有难度,不说引号少写不少写。如果引号中套用引号了。

比如:比如"引号中间在有["引号"]的话"这样就能难处理了。

是啊。

#7


楼上有几位想的太复杂了,当然证明几位考虑周到啊
其实我的问题就是排除了引号缺失和引号嵌套问题的,加上这些不确定性大了,但其实也不符合中文规范了,暂时先不考虑吧。

另外解法就只有楼上两位提供的了吗?

#8


String orginal= "\"haha\"123\"hehe\"4567\"hihi\"";
String replaced = orginal.replaceAll("\"(.*?)\"", "“$1”");

#9


新手来学习 相信不久后我就能与诸位探讨问题了

#10


引用 8 楼 zhuzeitou 的回复:
Java code
String orginal= "\"haha\"123\"hehe\"4567\"hihi\"";
String replaced = orginal.replaceAll("\"(.*?)\"", "“$1”");

你试试这个String s = "\"\"haha\"123\"hehe\"4567\"hihi\"\"";

#11


引用 8 楼 zhuzeitou 的回复:
Java code
String orginal= "\"haha\"123\"hehe\"4567\"hihi\"";
String replaced = orginal.replaceAll("\"(.*?)\"", "“$1”");

8楼正解,学习了

String orginal= "\"\"haha\"123\"hehe\"4567\"hihi\"\"";
String replaced = orginal.replaceAll("\"(.*)\"", "“$1”");
String s = replaced.replaceAll("\"(.*?)\"", "“$1”");
System.out.println(replaced);
System.out.println(s);

#12


根据语文标点规范。

双引号中若有引号,其中的引号应该使用单引号,若单引号中再有引号,应使用双引号,也就是这样的:

"abc 'abc "123" defg' defg"