TASK: 将generate,用户输入中的中文字符转换为英文字符
This commit is contained in:
@@ -0,0 +1,88 @@
|
|||||||
|
package com.ai.da.common.utils;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
public class ComprehensivePunctuationConverter {
|
||||||
|
private static final Map<Character, Character> FULL_TO_HALF_MAP = new HashMap<>();
|
||||||
|
|
||||||
|
static {
|
||||||
|
// 中文标点到英文标点的映射(扩展版)
|
||||||
|
FULL_TO_HALF_MAP.put(',', ',');
|
||||||
|
FULL_TO_HALF_MAP.put('。', '.');
|
||||||
|
FULL_TO_HALF_MAP.put(';', ';');
|
||||||
|
FULL_TO_HALF_MAP.put(':', ':');
|
||||||
|
FULL_TO_HALF_MAP.put('?', '?');
|
||||||
|
FULL_TO_HALF_MAP.put('!', '!');
|
||||||
|
FULL_TO_HALF_MAP.put('(', '(');
|
||||||
|
FULL_TO_HALF_MAP.put(')', ')');
|
||||||
|
FULL_TO_HALF_MAP.put('【', '[');
|
||||||
|
FULL_TO_HALF_MAP.put('】', ']');
|
||||||
|
FULL_TO_HALF_MAP.put('「', '\'');
|
||||||
|
FULL_TO_HALF_MAP.put('」', '\'');
|
||||||
|
FULL_TO_HALF_MAP.put('『', '"');
|
||||||
|
FULL_TO_HALF_MAP.put('』', '"');
|
||||||
|
FULL_TO_HALF_MAP.put('、', '\\');
|
||||||
|
FULL_TO_HALF_MAP.put('~', '~');
|
||||||
|
FULL_TO_HALF_MAP.put('—', '-');
|
||||||
|
FULL_TO_HALF_MAP.put('.', '.');
|
||||||
|
FULL_TO_HALF_MAP.put('〈', '<');
|
||||||
|
FULL_TO_HALF_MAP.put('〉', '>');
|
||||||
|
FULL_TO_HALF_MAP.put('《', '«');
|
||||||
|
FULL_TO_HALF_MAP.put('》', '»');
|
||||||
|
FULL_TO_HALF_MAP.put('〝', '"');
|
||||||
|
FULL_TO_HALF_MAP.put('〞', '"');
|
||||||
|
FULL_TO_HALF_MAP.put('﹁', '"');
|
||||||
|
FULL_TO_HALF_MAP.put('﹂', '"');
|
||||||
|
FULL_TO_HALF_MAP.put('…', '.');
|
||||||
|
FULL_TO_HALF_MAP.put('﹏', '_');
|
||||||
|
|
||||||
|
// 全角字母和数字
|
||||||
|
for (char c = 'A'; c <= 'Z'; c++) {
|
||||||
|
FULL_TO_HALF_MAP.put(c, (char)(c - 'A' + 'A'));
|
||||||
|
}
|
||||||
|
for (char c = 'a'; c <= 'z'; c++) {
|
||||||
|
FULL_TO_HALF_MAP.put(c, (char)(c - 'a' + 'a'));
|
||||||
|
}
|
||||||
|
for (char c = '0'; c <= '9'; c++) {
|
||||||
|
FULL_TO_HALF_MAP.put(c, (char)(c - '0' + '0'));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 将字符串中的全角字符(包括标点、字母、数字)转换为半角字符
|
||||||
|
*/
|
||||||
|
public static String convertToHalfWidth(String input) {
|
||||||
|
if (input == null || input.isEmpty()) {
|
||||||
|
return input;
|
||||||
|
}
|
||||||
|
|
||||||
|
StringBuilder result = new StringBuilder();
|
||||||
|
for (int i = 0; i < input.length(); i++) {
|
||||||
|
char c = input.charAt(i);
|
||||||
|
|
||||||
|
// 检查映射表
|
||||||
|
if (FULL_TO_HALF_MAP.containsKey(c)) {
|
||||||
|
result.append(FULL_TO_HALF_MAP.get(c));
|
||||||
|
}
|
||||||
|
// 处理全角空格(Unicode 12288)
|
||||||
|
else if (c == ' ') {
|
||||||
|
result.append(' ');
|
||||||
|
}
|
||||||
|
// 其他字符保持不变
|
||||||
|
else {
|
||||||
|
result.append(c);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return result.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
// String text = "这是一个全角示例,包含:中文标点、全角字母(ABC)、全角数字(123) 还有全角空格!";
|
||||||
|
String text = "birds,yellow";
|
||||||
|
String converted = convertToHalfWidth(text);
|
||||||
|
System.out.println("原始文本: " + text);
|
||||||
|
System.out.println("转换后: " + converted);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -334,6 +334,10 @@ public class GenerateServiceImpl extends ServiceImpl<GenerateMapper, Generate> i
|
|||||||
prefix = userInput.substring(0, userInput.indexOf(",")) + ", ";
|
prefix = userInput.substring(0, userInput.indexOf(",")) + ", ";
|
||||||
userInput = userInput.substring(userInput.indexOf(",") + 1);
|
userInput = userInput.substring(userInput.indexOf(",") + 1);
|
||||||
}
|
}
|
||||||
|
// 替换用户输入中的中文字符
|
||||||
|
log.info("用户输入,处理前:{}", userInput);
|
||||||
|
userInput = ComprehensivePunctuationConverter.convertToHalfWidth(userInput);
|
||||||
|
log.info("用户输入,处理后:{}", userInput);
|
||||||
String translated = prefix + pythonService.promptTranslate(userInput);
|
String translated = prefix + pythonService.promptTranslate(userInput);
|
||||||
switch (level1Type) {
|
switch (level1Type) {
|
||||||
case "Moodboard":
|
case "Moodboard":
|
||||||
|
|||||||
Reference in New Issue
Block a user