我使用以下正则表达式
JOINTS.*\s*(?:(\d*\s*\S*\s*\S*\s*\S*)\r\n\s*)*
Run Code Online (Sandbox Code Playgroud)
在以下类型的数据:
JOINTS DISPL.-X DISPL.-Y ROTATION
1 0.000000E+00 0.975415E+01 0.616921E+01
2 0.000000E+00 0.000000E+00 0.000000E+00
Run Code Online (Sandbox Code Playgroud)
这个想法是提取两个组,每个组包含一行(从联合号,1,2等开始)C#代码如下:
string jointPattern = @"JOINTS.*\s*(?:(\d*\s*\S*\s*\S*\s*\S*)\r\n\s*)*";
MatchCollection mc = Regex.Matches(outFileSection, jointPattern );
foreach (Capture c in mc[0].Captures)
{
JointOutput j = new JointOutput();
string[] vals = c.Value.Split();
j.Joint = int.Parse(vals[0]) - 1;
j.XDisplacement = float.Parse(vals[1]);
j.YDisplacement = float.Parse(vals[2]);
j.Rotation = float.Parse(vals[3]);
joints.Add(j);
}
Run Code Online (Sandbox Code Playgroud)
但是,这不起作用:它返回一个组:整个块,包括列标题,而不是返回两个捕获的组(内部组).为什么会这样?C#是否以不同方式处理未捕获的组?
最后,RegExes是最好的方法吗?(我真的觉得我现在有两个问题.)
我在例子中从字符串中获取毫秒数时遇到麻烦.到目前为止,我已经尝试了这三种不同的方式,示例显示了最新的尝试.似乎总是认为TemporalAccessor不支持ChronoField.如果我可以成功构建一个Instant实例,我可以使用toEpochMilli().
String dateStr = "2014-08-16T05:03:45-05:00"
TemporalAccessor creationAccessor = DateTimeFormatter.ISO_OFFSET_DATE_TIME.parse(dateStr);
Instant creationDate = Instant.from(creationAccessor);
Run Code Online (Sandbox Code Playgroud)
请提供简明的答案(不要从头开始构建格式化程序)并仅使用java 8标准发行版(我可以使用Joda,但希望避免依赖项).
编辑:上面代码中的Instant.from抛出:java.time.DateTimeException: Unable to obtain Instant from TemporalAccessor: {OffsetSeconds=-18000},ISO resolved to 2014-08-16T05:03:45 of type java.time.format.Parsed
我有一串未知的长度
它是格式
\nline
\nline
\nline
Run Code Online (Sandbox Code Playgroud)
知道多长时间我怎么能把字符串的最后10行用"\n"分隔一行
我有一些字符串
bla bla bla bla <I NEED THIS TEXT>
Run Code Online (Sandbox Code Playgroud)
获取文本的最佳和最快的方法是<>什么?
给出一个非常大的字符串.我想在循环中处理部分字符串,如下所示:
large_string = "foobar..."
while large_string:
process(large_string.pop(200))
Run Code Online (Sandbox Code Playgroud)
这样做的有效方式是什么?
开始处理完全基于JSON数据构建的项目.它返回如下:
{"location":{"id":10,"contactPhone":"8675309","contactName":"bob","name":"bill smith","zipCode":"90210","state":"California","address1":"104 S. Olive","city":"Temecula","country":"USA"},"success":true}
Run Code Online (Sandbox Code Playgroud)
通过遍历带有.find和其他过滤的DOM来查找成功标志,我很乐意处理以HTML格式(通常是表格)返回的数据.我不知道如何用JSON做到这一点 - 我需要过滤到最后一个对象"success"并检查它是真还是假.使用HTML返回的数据,我这样做:
submitHandler: function(form) {
$.ajax({
//other ajax stuff
success: function(data) {
var answer = $(data).find("td:eq(1)").text();
var message = $(data).find("td:eq(3)").text();
//console.log(data);
if (answer == "True") {
$('#messages').show().html(message);
} else {
$('#messages').show().html('Error logging in: ' + message);
}
}
});
return false;
}
Run Code Online (Sandbox Code Playgroud)
我可以发布到webservice并通过此.ajax调用获取返回的JSON
$.fn.serializeObject = function() {....}
submitHandler: function(form){
var wrapper = {};
var location = {};
wrapper.location = $("#newLocation").serializeObject();
$.ajax({
type: $(form).attr('method'),
url: '/web/service/' + 'locationService' + '/' …Run Code Online (Sandbox Code Playgroud) Javascript中有一个很好的数学解析器吗?我希望能够解析类似的东西:
LOG(3.14)+5^2+POW(2,LN(X*2,Y))
Run Code Online (Sandbox Code Playgroud)
谢谢,
我正在为我们公司的产品编写一个库,它将采用我们的用户已经熟悉的任何类型的体系结构维度作为从字符串转换为double的函数的输入.以下是我们希望有效的输入类型列表.
Input| 意义| Output(英寸由双人代表)
12.5' | 12英尺和6英寸|150.0
11" | 11英寸|11.0
3/16"| 英寸的3个十六分之一|0.1875
在英尺和英寸以及英寸和十六分之间可以使用或不使用空格
11' 11"| 11英尺和11英寸|143.0
11'11"| 11英尺和11英寸|143.0
在英尺和英寸之间或英寸和十六分之间或两者之间可以使用或不使用破折号
12'-11"| 12英尺和11英寸|155.0
12' 11 3/16"| 12英尺和11英寸和3个十六分之二|155.1875
12' 11-1/2"| 12英尺和11英寸和8个十六分之二|155.5
在英尺和英寸以及英寸和十六分之间可以使用任意数量的空间
12' 11 1/2"| 12英尺和11英寸和8个十六分之二|155.5
还提供了另一种更简单的格式
121103| 12英尺和11英寸和3个十六分之二|155.1875
每种格式都可以使用否定词
-121103| 12英尺和11英寸和3个十六分之二|-155.1875
-11'11"| 11英尺和11英寸|-143.0
我们目前正在使用一组极其复杂的分支逻辑来尝试确定输入尝试模拟的格式......并且它并不适用于所有情况.
是否有一些可能的LINQ和正则表达式和巫术的组合,我们可以用来确定如何解析字符串?
另请注意,我们确实希望避免在表单上给出一个简单的组合框来选择输入格式类型.
虽然有类似的问题,但我似乎无法为我的案例找到一个有效的解决方案:
我在字符串中遇到一些讨厌的十六进制字符,例如
'\xe2\x80\x9chttp://www.google.com\xe2\x80\x9d blah blah#%#@$^blah'
Run Code Online (Sandbox Code Playgroud)
我需要的是删除这些十六进制\xHH字符,并单独删除它们,以获得以下结果:
'http://www.google.com blah blah#%#@$^blah'
Run Code Online (Sandbox Code Playgroud)
解码没有帮助:
s.decode('utf8') # u'\u201chttp://www.google.com\u201d blah blah#%#@$^blah'
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
是否有直接的方法来实现具有以下签名的方法?至少,实现需要处理原始类型(例如Double和Integer).非原始类型将是一个很好的奖金.
//Attempt to instantiate an object of type T from the given input string
//Return a default value if parsing fails
static <T> T fromString(String input, T defaultValue)
Run Code Online (Sandbox Code Playgroud)
对于实现FromString接口(或等效的)的对象,实现将是微不足道的,但我还没有找到任何这样的东西.我还没有找到使用反射的功能实现.