对文件进行TypeScript代码重构,重点优化字符串匹配方法设计,将原有的整句C#语句捕获逻辑精确调整为仅捕获字符串值表达式部分,通过90%的测试用例。开发过程中必须严格遵循以下规范:采用原生TypeScript开发方式,严禁使用反编译JavaScript的方法;禁止使用`git show`等需要用户手动确认的操作;所有中间生成的临时文件仅在最终结束时,以清单形式提示用户需要清理的文件列表,不得自动执行清理操作。不要使用 `<`、 `&`、`>` 等html代码中才有的符号,严格使用 typescript 语言语法, 不使用 `arguments` 等保留字段作为局部变量名。 其中CodeSnippet类成员定义如下: ```typescript export class CodeSnippet { /** * 要替换的原始内容在代码全文中的起始位置,从0开始 */ originalIndex: number; /** * 从originalIndex开始长度至少30个字符的原始代码文本,如果从originalIndex开始后续全文中包含`;`符号,那么originalContext必须包含一个`;`号 */ originalContext: string; /** * 标记是否改变了原始代码内容,如果需要替换文件内容则为true,否则为false; 具体定义为: isChanged = originalCode!=convertedCode */ isChanged: boolean; /** * 要替换的C#语句整句原始内容 */ originalCode: string; /** * originalCode转换后的代码 */ convertedCode: string; /** * 匹配出的所有字符串列表, 包括转换出来的字符串模板,同一个位置匹配出的字符串会合并到一个元素中 */ literals: string[]; /** * 无法识别的疑似字符串列表 */ unexpects: string[]; } ``` 代码实现需满足以下具体技术要求: 1. 重构originalCode的解析逻辑,实现精确的字符串操作表达式定位与提取,严格排除非字符串表达式的代码部分 2. 基于调整后的originalCode提取逻辑,同步更新convertedCode的转换逻辑和originalIndex的位置映射关系,确保代码转换的准确性和位置对应关系 3. 完整实现CSharpStringExtractor类,该类必须包含名为`extractStrings`的公共成员方法。此方法接收C#代码字符串作为输入参数,提取其中的字符串文本转换信息,并以CodeSnippet[]数组形式返回处理结果 CodeSnippet数据结构必须严格符合以下规范: - CodeSnippet.originalCode:存储从C#代码中提取的完整字符串值表达式文本,确保不包含多余的代码内容 - CodeSnippet.convertedCode:存储按照"规则A"转换后的字符串值表达式文本,保持语法正确性 - CodeSnippet.literals:存储从字符串值表达式中提取的所有字符串文本组成的字符串数组,确保包含所有嵌套和连接的字符串片段,包括转义字符和特殊符号 "规则A"转换逻辑的详细实现规范: 1. 对于赋值表达式中形如`xxx.text = 字符串值表达式`的模式: - 非内插字符串(不以$@或$开头):在原始字符串值表达式末尾添加`.TR()`方法调用,保持原有字符串内容不变 - 内插字符串(以$@或$开头):将整个字符串表达式转换为`Tr.Format(...)`格式,保持原有占位符结构和表达式逻辑 2. 对于使用`+`运算符连接的字符串表达式: - 对每个独立的字符串子表达式应用与规则1相同的转换处理,保持原有的连接结构和运算顺序 3. 其他所有不符合上述模式的情况: - CodeSnippet.convertedCode字段保持原始字符串值表达式不变 - CodeSnippet.literals字段仍需准确提取所有字符串文本内容,包括转义字符和特殊符号 4. string.Format(...) 形式包含的字符串表达式, 需要特殊处理, 连带 `string.Format()` 一起捕获存入 originalCode 成员 5. 需要捕获类对象成员初始化赋值表达式中, 出现在赋值操作符`=`右侧的字符串值表达式 6. 需要能捕获 switch 语句中包含普通字符串的情况 7. 需要正确识别字符串包含各种特殊符号和转译符号组合的情况, 能正确识别这种情况下的字符串边界 8. 函数参数需要拆分, 逐个参数捕获 9. string.Format(...) 形式包含的字符串表达式, 需要特殊处理, 连带 `string.Format()` 一起捕获存入 originalCode 成员 实现过程中必须特别注意以下技术要点: - 实现精确的字符串边界识别算法,正确处理单引号和双引号字符串的开始与结束位置 - 设计转义字符处理机制,妥善处理字符串中的转义字符(如\"、\'、\\等),避免错误识别字符串边界 - 开发代码结构分析逻辑,正确区分字符串内的代码内容与字符串外的代码结构 - 确保提取的字符串文本的准确性和完整性,包括多行字符串、复杂嵌套结构和特殊编码字符 - 全面处理各种边缘情况,如空字符串、仅包含空格的字符串、包含特殊字符的字符串、零长度字符串等 完成实现后,需进行全面测试验证:确保代码通过90%以上的测试用例,对未通过的测试用例进行针对性分析和优化,提供详细的测试报告和优化方案。