Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如果我的文件中的数据包含值的分隔符(ç;),该怎么办_Java - Fatal编程技术网

Java 如果我的文件中的数据包含值的分隔符(ç;),该怎么办

Java 如果我的文件中的数据包含值的分隔符(ç;),该怎么办,java,Java,我需要导入批量文件,分析数据并生成报告。 这些文件中有3种类型的数据。 对于每种类型的数据,都有不同的布局 卖家详细信息 salesperson数据的格式为id 001,行的格式如下: 001çCPFçNameç薪水 客户数据 客户数据的格式为id 002,行的格式如下: 002çCNPJçNameç商业区 销售数据 销售数据的格式为id 003。在销售线中,有一个列表 由方括号[]包围的项目的名称。该行的格式如下: 003çSale IDç[商品ID商品数量商品价格]ç销售员姓名 样本数据 以

我需要导入批量文件,分析数据并生成报告。 这些文件中有3种类型的数据。 对于每种类型的数据,都有不同的布局

卖家详细信息
salesperson数据的格式为id 001,行的格式如下:
001çCPFçNameç薪水

客户数据
客户数据的格式为id 002,行的格式如下:
002çCNPJçNameç商业区

销售数据
销售数据的格式为id 003。在销售线中,有一个列表 由方括号[]包围的项目的名称。该行的格式如下:
003çSale IDç[商品ID商品数量商品价格]ç销售员姓名

样本数据
以下是系统应能读取的数据示例。
001ç1234567891234çPedroç50000
001ç3245678865434ç保罗ç40000.99
002ç2345675434544345çJose da SilvaçRural
002ç2345675433444345çEduardo PereiraçRural
003ç10ç[1-10-100,2-30-2.50,3-40-3.10]çPedro
003ç08ç[1-34-10,2-33-1.50,3-40-0.10]ç保罗

当字段值​​是否包含分隔符(ç)

示例:

001ç1234567891234çAssunççoç50000

我不知道你说的“做”什么意思

但处理使用
ç
作为分隔符的数据应该没有问题。前提是
ç
仅用作分隔符

  • 如果使用的是
    String.split
    ,则可以使用
    “ç”
    作为分隔符regex
  • 如果使用的是
    扫描仪
    ,则可以在分隔符中包含
    “ç”
  • 一个典型的CSV阅读器库将:;允许您使用
    “ç”
    作为字段分隔符。。。而不是
    ,“

也有可能
ç
实际上代表了其他内容,用于写入文件的字符集/编码与用于读取文件的字符集/编码不匹配


使用
ç
作为分隔符不是一个好主意。虽然C+cedila主要用于非英语文本(请参阅),但您偶尔也会在英语文本中看到它。如果将其用作分隔符,则可能存在冲突。。。如果文件格式没有引用或转义分隔符的语法,则可能会出现问题

这就导致了:

当字段值​​是否包含分隔符(ç)

然后:

  • 您需要文件语法中的引用或转义方案
  • 如果没有,则文件语法不明确
  • 如果语法不明确,就没有简单的方法来解析文件。(您需要一个在所有实际示例中都有效的消歧启发式方法。您可能需要一个手工构建的解析器来实现该启发式方法。)
  • 如果无法通过启发式解决歧义,则需要更改文件语法;e、 g.添加转义/引用支持,或使用不同的分隔符

你无能为力。这是文件格式的问题。作为字段值的一部分,分隔符应该有一些转义规则。作为一种解决方法(取决于数据,如果这真的有效)如果有3个以上的分隔符,您可以只使用第一个、第二个和最后一个分隔符。向数据发布者介绍US-ASCII和Unicode专门指定的分隔符:单位分隔符(31)、记录分隔符(30)、组分隔符(29)、文件分隔符(28)。没有必要攻击你自己的授权者。另一种可能性是。