我需要编写一个StringUtils.commaDelimitedListToStringArray函数的扩展版本,它获取一个额外的参数:escape char.
所以打电话给我:
commaDelimitedListToStringArray("test,test\\,test\\,test,test", "\\")
Run Code Online (Sandbox Code Playgroud)
应该返回:
["test", "test,test,test", "test"]
Run Code Online (Sandbox Code Playgroud)
我目前的尝试是使用String.split()使用正则表达式拆分String:
String[] array = str.split("[^\\\\],");
Run Code Online (Sandbox Code Playgroud)
但返回的数组是:
["tes", "test\,test\,tes", "test"]
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
我正在尝试使用Protocol Buffers进行消息序列化.
我的消息格式应该包含Map <String,Object>条目......但是如何编写.proto定义?
据我所知,Protocol Buffers没有内置Map类型.我可以使用重复字段来模拟它.但我遇到的最大问题是,您需要定义所有类型.我希望我的信息灵活,所以我不能指定类型.
有任何想法吗?
我仍然在寻求一种非常简单的语言,现在我知道没有.所以我自己用ANTLR3写一个.
我在这个答案中找到了一个很好的例子:
Exp.g:
grammar Exp;
eval returns [double value]
: exp=additionExp {$value = $exp.value;}
;
additionExp returns [double value]
: m1=multiplyExp {$value = $m1.value;}
( '+' m2=multiplyExp {$value += $m2.value;}
| '-' m2=multiplyExp {$value -= $m2.value;}
)*
;
multiplyExp returns [double value]
: a1=atomExp {$value = $a1.value;}
( '*' a2=atomExp {$value *= $a2.value;}
| '/' a2=atomExp {$value /= $a2.value;}
)*
;
atomExp returns [double value]
: n=Number {$value = Double.parseDouble($n.text);}
| '(' exp=additionExp ')' {$value = …Run Code Online (Sandbox Code Playgroud) 我在官方的Jasper报告示例中描述了我的报告中的TOC .
它在示例中提到的限制范围内运行良好:
这个操作显然只有一个不便之处.最终文档未反映页面顺序的修改.您可以看到,在我们的示例中,目录不会在页脚上显示页码,并且页面#1位于目录之后.
要解决这个限制,我只需要一件事:一个变量(或其他)告诉我TOC有多少页面.
当假设一页TOC时,我可以在我的文档的页脚中添加1到当前页面编号和总页面编号.然后我的20页PDF将有以下页面:
此外,我需要在标题子报表中的每个标题中添加一个以更正我的页码.但由于我的TOC可能比一页长,这不是最佳解决方案.
有没有办法做到这一点?
我在angular2应用程序中遇到了性能问题,因为我有一个很大的Observable.combineLatest(),其中有许多输入快速变化,我想要去掉回调调用:
myData$ = Observable.combineLatest(
this.store.let(fromRoot.getFoo),
this.store.let(fromRoot.getBar),
this.store.let(fromRoot.getFoobar),
this.store.let(fromRoot.getBarfoo),
(foo, bar, foobar, barfoo) => {
...
});
Run Code Online (Sandbox Code Playgroud)
事后调用debounce,例如Observable.combineLatest(...).debounceTime(300),是无用的,因为CPU密集型任务发生在仍然经常被调用的combineLatest回调中.
我想我必须结合另一个Observable,但我不知道该怎么做,有什么想法吗?
我正在编写一个TYPO3扩展,它配置了一个tt_contentUID 列表.这些指向"text"类型的内容元素,我想通过我的扩展来呈现它们.
由于TYPO3s特殊的方式转换您在进入数据库时在富文本编辑中输入的文本,并在渲染到前端时再次转换它,我不能只输出该bodytext字段的数据库内容.
我想渲染这些文本,因为它们通常会被TYPO3渲染.我怎么做?
使用equinox servlet桥部署我的OSGi Web应用程序时,我得到以下内容:
log4j:WARN No appenders could be found for logger (org.springframework.osgi.extender.internal.activator.ContextLoaderListener).
log4j:WARN Please initialize the log4j system properly.
Run Code Online (Sandbox Code Playgroud)
我尝试了几种提供必要的"log4j.properties"文件的方法,包括:
当然我也有一个片段包,用log4j.properties文件扩展log4j包,但看起来这个log4j包没有被使用.
补充:我应该补充一点,我正在Eclipse中开发应用程序......我的片段包用于配置log4j/slf4j.
有人解决了这个吗?有任何想法吗?
我写了以下指令,因为显然ng2-translate缺少一个:
import { Directive, ElementRef, Renderer, OnDestroy } from '@angular/core';
import { TranslateService } from 'ng2-translate';
import { Subscription } from 'rxjs';
@Directive({selector: '[translate]'})
export class TranslateDirective implements OnDestroy {
subscription: Subscription;
constructor(el: ElementRef, renderer: Renderer, translateService: TranslateService) {
let translateKey = el.nativeElement.attributes.translate.value;
this.subscription = translateService.get(translateKey).subscribe(value => {
el.nativeElement.innerHTML = value; // this works
// renderer.setText(el.nativeElement, value); // this doesn't work for some reason?
});
}
ngOnDestroy(): void {
if (this.subscription) {
this.subscription.unsubscribe();
}
}
}
Run Code Online (Sandbox Code Playgroud)
正如你所看到的那样,我使用低级"el.nativeElement.innerHTML"工作,但它似乎暗示"renderer.setText"调用也应该起作用.相反,它完全没有效果.
问题:为什么?应该怎么做setText调用?额外奖励:代码是否有问题,或者有一个很好的理由ng2-translate不包括一个?馊主意?