首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Ruby将unicode转换为文件中的字符

使用Ruby将unicode转换为文件中的字符
EN

Stack Overflow用户
提问于 2022-07-23 08:34:56
回答 1查看 131关注 0票数 1

我在一个code.txt文件中有这个字符串。

代码语言:javascript
运行
复制
"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中的内容将类似..。

代码语言:javascript
运行
复制
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,但是字符串保持不变。

代码语言:javascript
运行
复制
code = File.read('code.txt')
code = code.encode('UTF-8')
file = File.open('solution.cpp', "w:UTF-8")
file.write(code)

我该怎么做?谢谢。

EN

Stack Overflow用户

回答已采纳

发布于 2022-07-23 10:53:58

因此,我试图重现您的问题,并得到了与使用您的解决方案所描述的相同结果。

我注意到\u003B (例如)是分号字符的unicode代码。因此,我使用regex /\\u(.{4})/分析了每个“/\\u(.{4})/”表示法的字符串,因为它将“十六进制数字”标记为Unicode代码点。然后用gsub!和Array#pack来转换和替换每个Unicode字符。

代码语言:javascript
运行
复制
[$1.to_i(16)].pack('U') # => "\n", "\n", "<", "&", "\n", "=" ...etc.

最后把结果写到一个文件中。因此,我的最后一个方法如下:

代码语言:javascript
运行
复制
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搜索前导或尾随引号,并在写入文件时用空字符串替换它。

票数 3
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73089223

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档