我在一个code.txt文件中有这个字符串。
"class Solution {\u000Apublic:\u000A vector\u003Cvector\u003Cint\u003E\u003E insert(vector\u003Cvector\u003Cint\u003E\u003E\u0026 intervals, vector\u003Cint\u003E\u0026 newInterval) {\u000A int len \u003D intervals.size()\u003B\u000A int index \u003D 0\u003B\u000A vector\u003Cvector\u003Cint\u003E \u003E ans\u003B\u000A \u000A\u000A while(index \u003C len \u0026\u0026 intervals[index][1] \u003C newInterval[0]) ans.push_back(intervals[index++])\u003B\u000A \u000A while(index \u003C len \u0026\u0026 intervals[index][0] \u003C\u003D newInterval[1]) {\u000A newInterval[0] \u003D min(intervals[index][0], newInterval[0])\u003B\u000A newInterval[1] \u003D max(intervals[index][1], newInterval[1])\u003B\u000A index++\u003B\u000A }\u000A \u000A ans.push_back(newInterval)\u003B\u000A \u000A while(index \u003C len) ans.push_back(intervals[index++])\u003B\u000A\u000A return ans\u003B \u000A }\u000A}\u003B "
我希望将此字符串转换为C++ syntex并写入solution.cpp文件。
solution.cpp中的内容将类似..。
class Solution {
public:
vector<vector<int>> insert(vector<vector<int>>& intervals, vector<int>& newInterval) {
int len = intervals.size();
int index = 0;
vector<vector<int> > ans;
while(index < len && intervals[index][1] < newInterval[0]) ans.push_back(intervals[index++]);
while(index < len && intervals[index][0] <= newInterval[1]) {
newInterval[0] = min(intervals[index][0], newInterval[0]);
newInterval[1] = max(intervals[index][1], newInterval[1]);
index++;
}
ans.push_back(newInterval);
while(index < len) ans.push_back(intervals[index++]);
return ans;
}
};
我尝试过将编码强制/转换为UTF-8
,但是字符串保持不变。
code = File.read('code.txt')
code = code.encode('UTF-8')
file = File.open('solution.cpp', "w:UTF-8")
file.write(code)
我该怎么做?谢谢。
发布于 2022-07-23 10:53:58
因此,我试图重现您的问题,并得到了与使用您的解决方案所描述的相同结果。
我注意到\u003B
(例如)是分号字符的unicode代码。因此,我使用regex /\\u(.{4})/
分析了每个“/\\u(.{4})/
”表示法的字符串,因为它将“十六进制数字”标记为Unicode代码点。然后用gsub!和Array#pack来转换和替换每个Unicode字符。
[$1.to_i(16)].pack('U') # => "\n", "\n", "<", "&", "\n", "=" ...etc.
最后把结果写到一个文件中。因此,我的最后一个方法如下:
code = File.read('code.txt')
code.gsub!(/\\u(.{4})/) do |match|
[$1.to_i(16)].pack('U')
end
File.open('solution.cpp', 'w') { |f| f.puts code.gsub!(/\A"|"\Z/, '') }
还请注意,我在末尾再次使用gsub
搜索前导或尾随引号,并在写入文件时用空字符串替换它。
https://stackoverflow.com/questions/73089223
复制相似问题