关于空字符(NUL)在三种不同语言中的匹配 您所在的位置:网站首页 特殊字符编码表示什么 关于空字符(NUL)在三种不同语言中的匹配

关于空字符(NUL)在三种不同语言中的匹配

2024-06-04 19:17| 来源: 网络整理| 查看: 265

一、应用描述 因数据整理的业务需要,解密出来的字符串中间带有一些空字符(NUL),用Notepad++打开,如图1所示:在这里插入图片描述 欲匹配分割或匹配替换该字符在不同语言中有着不同的匹配规则,本文将以python、java及QT C++三种语言作为示例。

二、应用示例 1、python语言中的匹配 (1)应用需求 读取文本并替换掉NUL字符,将处理后的字符串输出到文本中。 (2)代码示例

if __name__ == '__main__': linesStrList = [] readFile = open(r"E:\tmp\test.txt", "r") writeFile = open(r"E:\tmp\debugFile.txt", "w") while True: linesStr = readFile.readline() if not linesStr: readFile.close() break linesStrList.append(linesStr) # 存入容器中 for tempStr in linesStrList: outStr = tempStr.replace("\00", " $ ") # 匹配NUL字符,替换为 $ writeFile.writelines(outStr) writeFile.close()

(3)运行结果 对比,发现NUL字符已成功匹配且被替换 在这里插入图片描述 2、java语言中的匹配 (1)应用需求 为获取两个NUL之间的字符串,如图中的Ω或V。 (2)示例代码

package demo; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.util.ArrayList; public class Demo { public static void main(String[] args) throws IOException{ String outString; String linesString; String[] tempStrings; ArrayList linesArrayList = new ArrayList(); FileReader testFileReader = new FileReader("E:\\tmp\\test.txt"); BufferedReader testBufferedReader = new BufferedReader(testFileReader); FileWriter debugFileWriter = new FileWriter("E:\\tmp\\debugFile.txt", false); BufferedWriter debugBufferedWriter = new BufferedWriter(debugFileWriter); while((linesString = testBufferedReader.readLine()) != null) { linesArrayList.add(linesString); } testBufferedReader.close(); for (String tempString : linesArrayList) { tempStrings = tempString.split("\\\00"); // 根据NUL字符分割 if(tempStrings.length > 1) { outString = tempStrings[1]; debugBufferedWriter.write(outString + "\n"); } } debugBufferedWriter.close(); } }

(3)运行结果 对比可知,两个NUL字符之间的字符串已被提取出来 在这里插入图片描述 3、QT C++中的匹配 (1)应用需求 匹配NUL字符并替换 (2)示例代码

QFile readFile; QFile writeFile; QString outStr; QString linesStr; QByteArray linesByte; QStringList linesStrList; writeFile.setFileName("E:/tmp/debugFile.txt"); writeFile.open(QIODevice::ReadWrite); QTextStream writeHadle(&writeFile); // 需 #include readFile.setFileName("E:/tmp/test.txt"); QTextCodec *codec = QTextCodec::codecForName("GBK"); // 需 #include if(readFile.exists("E:/tmp/test.txt")){ readFile.open(QIODevice::ReadOnly | QIODevice::Text); while (!readFile.atEnd()) { linesByte = readFile.readLine(); linesStr = codec -> toUnicode(linesByte); linesStrList.append(linesStr); } readFile.close(); foreach (QString tempStr, linesStrList) { outStr = tempStr.replace(QChar('\0'), " "); // 匹配替换为空格 writeHadle


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有