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

qq1212 2010-07-27 04:54:25
如这样一串字符串 【实现要转移的字符把"单引号"变成"双引号"】

用java如何才能把其中的英文双引号变成中文的呢?要考虑前后引号,前面的是“,后面的是”。
返回结果:【实现要转移的字符把“单引号”变成“双引号”】
...全文
456 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
coooliang 2010-07-28
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 zhuzeitou 的回复:]
Java code
String orginal= "\"haha\"123\"hehe\"4567\"hihi\"";
String replaced = orginal.replaceAll("\"(.*?)\"", "“$1”");
[/Quote]
你试试这个String s = "\"\"haha\"123\"hehe\"4567\"hihi\"\"";
Isteak 2010-07-28
  • 打赏
  • 举报
回复
新手来学习 相信不久后我就能与诸位探讨问题了
zhuzeitou 2010-07-28
  • 打赏
  • 举报
回复
String orginal= "\"haha\"123\"hehe\"4567\"hihi\"";
String replaced = orginal.replaceAll("\"(.*?)\"", "“$1”");
qq1212 2010-07-28
  • 打赏
  • 举报
回复
楼上有几位想的太复杂了,当然证明几位考虑周到啊
其实我的问题就是排除了引号缺失和引号嵌套问题的,加上这些不确定性大了,但其实也不符合中文规范了,暂时先不考虑吧。

另外解法就只有楼上两位提供的了吗?
  • 打赏
  • 举报
回复
根据语文标点规范。

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

"abc 'abc "123" defg' defg"
coooliang 2010-07-28
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 zhuzeitou 的回复:]
Java code
String orginal= "\"haha\"123\"hehe\"4567\"hihi\"";
String replaced = orginal.replaceAll("\"(.*?)\"", "“$1”");
[/Quote]
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);
coooliang 2010-07-28
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 closewbq 的回复:]
确实有难度,不说引号少写不少写。如果引号中套用引号了。

比如:比如"引号中间在有["引号"]的话"这样就能难处理了。
[/Quote]
是啊。
无敌小奇 2010-07-27
  • 打赏
  • 举报
回复
引号中有引号是不符合规范的,双引号中应该套单引号,所以这个不用担心。
closewbq 2010-07-27
  • 打赏
  • 举报
回复
确实有难度,不说引号少写不少写。如果引号中套用引号了。

比如:比如"引号中间在有["引号"]的话"这样就能难处理了。
micsolaris 2010-07-27
  • 打赏
  • 举报
回复

//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;
}
}
zhaolinger2 2010-07-27
  • 打赏
  • 举报
回复

//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);//输出结果

}

}
  • 打赏
  • 举报
回复
有点难度,万一你英文引号漏了一个咋办?

62,612

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧