我从科学文献中提取了一系列表格,这些表格由列组成,每列都是不同的类型.这是一个例子
我希望能够为每列自动生成正则表达式.显然有一些简单的解决方案,.*所以我会添加他们只使用的约束:
[A-Z] [a-z] [0-9]',','''){3,4}上表的"最佳"答案是:
[A-Z]{3}
[A-Za-z\s\.]+
\d{4}\sm
\d{2}\u00b0\d{2}'\d{2}"N,\d{2}\u00b0\d{2}'\d{2}"E
(speciosissima|intermediate|troglodytes)
(hf|sr)
\d{4}
Run Code Online (Sandbox Code Playgroud)
当然,如果我们移出地理区域,第四个正则表达式会破裂,但软件不知道这一点.目的是收集许多正则表达式,比如说"坐标"并概括它们,可能是部分手动的.仅当存在少量不同的字符串时才会创建枚举.
我很感激能够做到这一点的(特别是F/OSS)软件的例子,特别是在Java中.(它类似于Google的Refine).我4年前就知道这个问题了,但这并没有真正回答问题和text2re网站似乎是互动的.
注意:我注意到投票结束为"过于本地化".这是一个非常普遍的问题(给出的表只是一个例子),正如Google/Freebase开发的Refine解决这个问题所示.它可能涉及各种各样的表格(例如财务,新闻等).这是一个浮点值:

自动确定某些权威机构报告实际年龄(例如,不是几个月,几天)并使用2位数的精确度将是有用的.
我已经开始使用visualvm来分析我在Eclipse中启动的应用程序.然后我启动visualvm,最初给出了可信的结果.

一段时间后,监视器中出现两个进程,耗费大量时间.

我没有故意援引这些.过了一会儿,他们消失了.它们是剖析过程中的人工制品吗?我需要担心吗?
我的例程很少出现在配置文件中,主要是他们调用的库.有没有办法显示哪些例程调用最常用的例程?
我有一个Guava,Multiset<Integer>并希望通过按(a)元素值和(b)元素计数排序的条目独立迭代.我用Simplest方法按元素频率的顺序迭代Multiset?如
ImmutableMultiset<Integer> entryList = Multisets.copyHighestCountFirst(myIntegerMultiset);
for (Integer i : entryList) {
System.out.println("I"+i);
}
Run Code Online (Sandbox Code Playgroud)
但这会返回所有条目,而我想要一个排序列表Multiset.Entry<Integer>(每个唯一值一个),这将允许我得到计数.
我想独立地得到相同的Multiset.Entry<Integer>排序列表<Integer>.
我在C#中有许多方法可以返回我希望测试的各种集合.我想尽可能少地使用测试API - 性能并不重要.一个典型的例子是:
HashSet<string> actualSet = MyCreateSet();
string[] expectedArray = new string[]{"a", "c", "b"};
MyAssertAreEqual(expectedArray, actualSet);
Run Code Online (Sandbox Code Playgroud)
// ...
void MyAssertAreEqual(string[] expected, HashSet<string> actual)
{
HashSet<string> expectedSet = new HashSet<string>();
foreach {string e in expected)
{
expectedSet.Add(e);
}
Assert.IsTrue(expectedSet.Equals(actualSet));
}
Run Code Online (Sandbox Code Playgroud)
我必须根据集合是否是数组,列表,ICollections等来编写许多签名.是否存在简化此操作的转换(例如,将数组转换为Set?).
我还需要为自己的课程这样做.我已经为他们实现了HashCode和Equals.它们(主要)是(比如)MySuperClass的子类.是否可以实现该功能:
void MyAssertAreEqual(IEnumerable<MySuperClass> expected,
IEnumerable<MySuperClass> actual);
Run Code Online (Sandbox Code Playgroud)
这样我可以打电话:
IEnumerable<MyClassA> expected = ...;
IEnumerable<MyClassA> actual = ...;
MyAssertAreEqual(expected, actual);
Run Code Online (Sandbox Code Playgroud)
而不是为每个班级写这个
我试图使用Visual Studio编辑器在C#的Assembly的Resources区域中创建XML文件.这些文件在XML编辑器中显示完全正确并且遵循我的模式(识别元素和属性).但是当我尝试读取它们时(从参考资料中)它们会失败,因为它们在文件的开头一直有3个虚假字符(或#EF #BB #BF).
这些字符不会出现在编辑器中,但它们存在于外部二进制编辑器中.当我删除它们manualy文件行为正常.
如何在Resources区域中可靠地创建XML文件?
在前2个回复之后我将问题修改为
"我如何读取资源文件以避免包含字节顺序标记?"
我在C#程序集中有一些资源,我在其中解决
byte[] foob = Properties.Resources.foo;
byte[] barb = Properties.Resources.bar;
...
Run Code Online (Sandbox Code Playgroud)
我想迭代这些资源,而不必保留我添加的索引.有没有一种方法可以返回所有资源?
我不得不通过复制和粘贴然后编辑编译器错误将代码从Java移植到C#(很快就会反过来).(请接受这是必要的;如果需要我可以解释).是否存在两种语言中相同代码片段运行方式不同的情况?我将包括在一个语言中定义顺序或操作或运算符优先级但在另一个语言中未定义的情况,但排除两者中未定义的情况.
我特别感兴趣的是可以识别这些片段的任何开发工具.
@Thomas.谢谢.J#不是一个选项 - 代码被强制要在C#中.你的评论中"this"是指什么?
我有一个zip文件,其内容显示为byte [] 但原始文件对象不可访问.我想阅读每个条目的内容.我能够从字节的ByteArrayInputStream创建一个ZipInputStream,并可以读取条目及其名称.但是,我看不到一种简单的方法来提取每个条目的内容.
(我看过Apache Commons,但也看不到那么简单的方法).
UPDATE @ Rich的代码似乎解决了这个问题,谢谢
QUERY为什么两个例子的乘数都是*4(128/512和1024*4)?
我正在将Java代码转换为C#.Java中的StringBuilder类似乎有比C#更多的方法.我对(比如说)Java功能很感兴趣
sb.indexOf(s);
sb.charAt(i);
sb.deleteCharAt(i);
Run Code Online (Sandbox Code Playgroud)
这似乎在C#中缺失.
我想前两个可以建模
sb.ToString().IndexOf(s);
sb.ToString().CharAt(i);
Run Code Online (Sandbox Code Playgroud)
但第三个是否会根据某人的内容而非实际内容进行操作?
是否有一种将此功能添加到所有缺失方法的常用方法?
我在Netbeans中有一个小型Java测试应用程序,main()该类从中读取输入System.in.如何打开一个可以输入输入的窗口?(我在Windows 7上使用NB 6.7.1).