在Perl中读取固定长度记录的最佳方法是什么.我知道要读取如下文件:
ABCDE 302
DEFGC 876
Run Code Online (Sandbox Code Playgroud)
我可以
while (<FILE>) {
$key = substr($_, 0, 5);
$value = substr($_, 7, 3);
}
Run Code Online (Sandbox Code Playgroud)
但是没有办法用read/unpack做到这一点?
是否有任何框架/库可以帮助在java中编写固定长度的平面文件?
我想把一个bean /实体的集合写成一个平面文件,而不用担心转换,填充,对齐,填充等等
例如,我想解析一个像:
public class Entity{
String name = "name"; // length = 10; align left; fill with spaces
Integer id = 123; // length = 5; align left; fill with spaces
Integer serial = 321 // length = 5; align to right; fill with '0'
Date register = new Date();// length = 8; convert to yyyyMMdd
}
Run Code Online (Sandbox Code Playgroud)
......进......
name 123 0032120110505
mikhas 5000 0122120110504
superuser 1 0000120101231
Run Code Online (Sandbox Code Playgroud)
...
我正在使用优秀的FileHelpers库来处理固定长度的航空公司计划文件.
我有一个日期字段,然后是记录中的几个字段,一个时间字段.
我想在FileHelpers记录类中结合这两个,并知道有一个自定义FieldConverter
属性.使用此属性,您可以提供自定义函数来处理字段数据并实现StringToField
和FieldToString
.
我的问题是:我是否可以将其他字段(已经阅读过)传递给该客户FieldConverter
,因此我可以将日期和时间结合在一起.FieldConverter
有一个实现,允许您引用自定义处理类和"其他字符串"甚至是一个对象数组.但是,鉴于这是在属性定义中完成的,我正在努力访问这个早期字段引用.
[FieldFixedLength(4)]
[FieldConverter(typeof(MyTimeConverter),"eg. ScheduledDepartureDate")]
public DateTime scheduledDepartureTime;
Run Code Online (Sandbox Code Playgroud) 我正在寻找一个.NET(更好的是C#中的开源)库来处理固定长度的字段文本文件.写一篇文章并不算太多,但现有的,经过测试的工作总是更好.
我将从PBX生成的文件中提取固定长度字段中的数据.每个PBX都有自己的文件格式,以及一组记录格式.我正在寻找一个使用动态文件和记录格式的简单方法的库,例如从INI或XML文件中读取.
编辑: 我之前忽略了Marcos Meli的伟大库FileHelpers,因为我认为我需要在编译时为每个记录类型创建一个类.事实并非如此,lib包含一个ClassBuilder
在运行时构建类的类.
新编辑: 来自不同PBX的记录仅在布局上有所不同,而不是在数据中,即所有记录布局都映射到同一个类.我想知道我是否应该使用FileHelper属性动态读取配置文件中的起始和长度数据?
我正在寻找一个很好的 Java 库,它可以轻松地允许读/写固定宽度的文件。需要维护遗留系统,即需要文件才能使用 COBOL。
任何建议都非常感谢!
谢谢。
我需要生成一个固定长度的文本行:
我现在拥有的是:
StringBuilder _sb = new StringBuilder();
_sb.Append(string.Format("{0,5}", "MM")); // serie to cancel
_sb.Append(string.Format("{0,20}", "45444")); // folio to cancel
_sb.Append(string.Format("{0,30}", "AC1122")); // account number (optional)
Run Code Online (Sandbox Code Playgroud)
这很有效,因为生成一个55个字符的固定长度字符串.
例如,可选值是一个空字符串,例如:
StringBuilder _sb = new StringBuilder();
_sb.Append(string.Format("{0,5}", "MM")); // serie to cancel
_sb.Append(string.Format("{0,20}", "45444")); // folio to cancel
_sb.Append(string.Format("{0,30}", "")); // account number (optional)
Run Code Online (Sandbox Code Playgroud)
在string.format中有空字符串然后不会给出固定长度,我仍然需要30个字符长度.
任何线索都非常感谢!!
谢谢
我需要将文件布局上的固定宽度字段与正则表达式匹配.该字段为数字/整数,始终包含四个字符,包含在0..1331范围内.当数字小于1000时,字符串用左零填充.所以这些例子都是有效的:
但下面必须不能接受:
如果我只能用正则表达式强制实施这个限制,那就太好了.玩了一会后,我得出了表达\0*[0-1331]\
.问题是它不会将大小限制为四个字符.我当然可以做,\000[0-9]|00[10-99]|0[100-999]|[1000-1331]\
但我拒绝使用如此令人讨厌的东西.谁能想到更好的方法?
我正在使用Bootstrap 3响应表来显示数据.但是,其中一列与其他列相比具有巨大的数据,如下所示
但我想展示有限的描述长度.简而言之,I would like to display first 2 to 3 lines of data [or 300 characters] and followed by .....
如果可能,将鼠标悬停在描述列上应该显示完整的描述 tooltip
我该如何实现这一目标?
html css fixed-length-record twitter-bootstrap twitter-bootstrap-3
给定最大可能值,如何简单地表示以十进制形式将此数字写为文本所需的空间?
真正的任务:pid_t
使用Linux上的gcc 记录固定长度的进程ids().在std::setw()
iomanipulator中使用编译时表达式会很好.
我发现linux/threads.h头包含一个PID_MAX
值,该值具有分配给进程的最大pid.所以有
#define LENGTH(t) sizeof(#t)-1
Run Code Online (Sandbox Code Playgroud)
这LENGTH(PID_MAX)
将是一个编译时表达式,但不幸的是这个数字是以hexa定义的:
#define PID_MAX 0x8000
Run Code Online (Sandbox Code Playgroud)
我目前最好的解决方案有点奇怪
static_cast<int>( ::floor( ::log(PID_MAX)/::log(10) + 1 ) );
Run Code Online (Sandbox Code Playgroud)
但这是计算运行时并使用math.h中的函数
我试图找到一个更好的解决方案,将纯文本(但每个字段的预定义长度)转换为xml.例如,输入文本可以是"Testuser new york 10018",前11个字符表示用户名,接下来的12个字符表示城市,接下来的5个字符表示邮政编码.所以我需要使用预定义的字段长度从上面的字符串形成一个xml.
我在想两种方法
通过在输入文本上使用子字符串函数定义业务实体并填充实体属性,然后将实体序列化为xml
预定义xml结构,使用xslt导航到每个节点并使用输入文本上的子字符串函数填充值.
我正在使用.NET Web服务,该服务将处理具有相对较长的多级记录格式的文本文件.文件中的每条记录代表不同的实体; 记录包含多个子类型.(COBOL作业当前正在处理相同的记录格式,如果这样可以更好地了解我们正在查看的内容).我已经创建了一个类结构(如果你愿意,可以使用DATA DIVISION)来保存输入数据.
我的问题是,你在.NET中处理大型,复杂的固定宽度文件有哪些最佳实践?我的一般方法是将整行读入一个字符串,然后将字符串中的数据解析为我创建的类.但是我不确定我是否会在字符串中的字符作为数组或字符串本身时获得更好的结果.我猜这是具体的问题,字符串与char [],但我会感激任何其他任何指针.
谢谢.
我正在尝试创建一个具有以下结构的文件:
- 每行有 32 个字节 - 每行看起来像这样的格式字符串:“%10i %3.7f %3.7f\n”
我的问题如下:当我有一个负浮点数时,该行会变长一个甚至两个字符,因为 - 符号不计入“%3.7f”。
还有比这更好的方法吗?
if( node->lng > 0 && node->lat > 0 ) {
sprintf( osm_node_repr, "%10i %3.7f %3.7f\n", node->id, node->lng, node->lat );
} else if (node->lng > 0 && node->lat < 0) {
sprintf( osm_node_repr, "%10i %3.7f %3.6f\n", node->id, node->lng, node->lat );
} else if (node->lng < 0 && node->lat > 0) {
sprintf( osm_node_repr, "%10i %3.6f %3.7f\n", node->id, node->lng, node->lat );
} else if ( node->lng < 0 && …
Run Code Online (Sandbox Code Playgroud) 我的页面由4个div组成:顶部是标题,中间是菜单div和内容div,底部是页脚div。
页脚应固定在屏幕底部。我希望内容 div 将从页眉 div 拉伸到页脚 div。如果我使用
position: absolute;
top: 80px;
bottom: 30px;
Run Code Online (Sandbox Code Playgroud)
然后内容被拉伸到页脚,但之后内容不会向右拉伸。请检查下面的代码。我希望红色的内容从绿色垂直延伸到黄色,从蓝色水平延伸到屏幕的右边缘。
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title><tiles:insertAttribute name="title" ignore="true" /></title>
<style>
html,body{
margin:0;
padding:0;
height:100%;
}
#javanus_header{
height: 80px;
background:#AAF054;
}
#javanus_footer{
position:absolute;
bottom:0;
width:100%;
height:30px;/* Height of the footer */
background: yellow;
}
#javanus_menu{
float: left;
position: absolute;
top: 80px;
height:200px;
width: 200px;
background: blue;
}
#javanus_content{
height: 300px;
margin-left: 200px;
background: red;
top:100px;
bottom:50px;
background-image:url(img/assist.png);
background-repeat: no-repeat;
background-position:center;
}
</style>
</head>
<body>
<div id="javanus_main"> …
Run Code Online (Sandbox Code Playgroud)