在Java中,我拿到一个字符串 中国南方航空官网-机票查询,机票预订,我需要把这个字符串中的英文标点换成中文的,该怎么写
时间: 2024-02-27 21:58:23 浏览: 124
你可以使用 Java 的 String 类的 replaceAll() 方法来实现英文标点转中文标点的功能。具体代码如下所示:
```java
String str = "中国南方航空官网-机票查询,机票预订";
str = str.replaceAll(",", ",");
str = str.replaceAll("-", "—");
```
在上面的代码中,我们使用 replaceAll() 方法将逗号 `,` 转换为中文逗号 `,`,将短横线 `-` 转换为中文短横线 `—`。你可以根据自己的需求添加其他的标点符号转换。
相关问题
在Java代码中,拿到一个字符串中国<em>南方航空</em>官网-机票查询,机票预订,我需要把这个字符串所有的英文标点,除去<></>标签全部换成中文的,给出代码和注解
可以使用正则表达式来实现这个需求,具体代码如下:
```java
String input = "中国<em>南方航空</em>官网-机票查询,机票预订";
String output = input.replaceAll("[\\pP‘’“”]", ""); // 将英文标点替换为空字符串
output = output.replaceAll("<.*?>", ""); // 将<>标签替换为空字符串
System.out.println(output);
```
解释:
- `replaceAll("[\\pP‘’“”]", "")`:使用正则表达式替换所有的英文标点,其中`[\\pP‘’“”]`表示匹配所有标点符号(包括中英文),`'`和`"`是两个特殊的中英文标点符号,需要单独列出。
- `replaceAll("<.*?>", "")`:使用正则表达式替换所有的`<></>`标签,其中`<.*?>`表示匹配所有的`<></>`标签,`.*?`表示非贪婪模式匹配任意字符,`?`表示匹配0次或1次。
输出结果为:
```
中国南方航空官网机票查询机票预订
```
在Java代码中,拿到一个字符串中国<em>南方航空</em>官网-机票查询,机票预订,我需要把这个字符串中除了<em></em>标签以外的标点符号全部换成中文标点,给出代码和注解
下面是Java代码实现:
```java
public static String replacePunctuation(String content) {
String regex = "(?<=<em>)[^<>/。,!?;:“”‘’《》\\s\\\\]+|[^<>/。,!?;:“”‘’《》\\s\\\\]+(?=</em>)|[^<>/。,!?;:“”‘’《》\\s<>/\\\\]+";
String replacement = "。";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(content);
return matcher.replaceAll(replacement);
}
```
注解:
1. `content`是输入的字符串;
2. `regex`是匹配非中文字符、非数字、非字母、非空格、非常用中文标点、非HTML标签的正则表达式,并且使用了正则表达式的零宽断言;
3. `replacement`是替换成的中文标点,这里使用的是句号;
4. `Pattern.compile(regex)`将正则表达式编译成模式;
5. `matcher.replaceAll(replacement)`将匹配到的字符串替换成`replacement`中的字符串。在这个正则表达式中,我们使用了三个子表达式,分别匹配了<em>标签中的内容、非<em>标签和非中文字符、非数字、非字母、非空格、非常用中文标点、非HTML标签的内容。
阅读全文