小编art*_*urh的帖子

如何在忽略转义逗号的同时拆分逗号分隔的String?

我需要编写一个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)

有任何想法吗?

java regex csv

26
推荐指数
3
解决办法
5万
查看次数

什么不应该进行单元测试?

我觉得有些问题只是难以进行单元测试.即使你这样做,通常这样的测试几乎没有价值.

除了getter和setter之外,什么代码不应该进行单元测试?

(可能与此问题类似)

unit-testing

14
推荐指数
3
解决办法
2150
查看次数

如何使用Protocol Buffers对Map <String,Object>进行编码?

我正在尝试使用Protocol Buffers进行消息序列化.

我的消息格式应该包含Map <String,Object>条目......但是如何编写.proto定义?

据我所知,Protocol Buffers没有内置Map类型.我可以使用重复字段来模拟它.但我遇到的最大问题是,您需要定义所有类型.我希望我的信息灵活,所以我不能指定类型.

有任何想法吗?

java amqp protocol-buffers

14
推荐指数
1
解决办法
1万
查看次数

扩展简单的ANTLR语法以支持输入变量

我仍然在寻求一种非常简单的语言,现在我知道没有.所以我自己用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)

java antlr antlr3

12
推荐指数
2
解决办法
8553
查看次数

Jasper Reports:正确的目录可能吗?

我在官方的Jasper报告示例中描述了我的报告中的TOC .

它在示例中提到的限制范围内运行良好:

这个操作显然只有一个不便之处.最终文档未反映页面顺序的修改.您可以看到,在我们的示例中,目录不会在页脚上显示页码,并且页面#1位于目录之后.

要解决这个限制,我只需要一件事:一个变量(或其他)告诉我TOC有多少页面.

当假设一页TOC时,我可以在我的文档的页脚中添加1到当前页面编号和总页面编号.然后我的20页PDF将有以下页面:

  • TOC(没有页脚)
  • 2/20
  • 3/20
  • ...
  • 19/20
  • 20/20

此外,我需要在标题子报表中的每个标题中添加一个以更正我的页码.但由于我的TOC可能比一页长,这不是最佳解决方案.

有没有办法做到这一点?

jasper-reports

7
推荐指数
1
解决办法
1943
查看次数

angular2:如何去除Observable.combine最新的电话?

我在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,但我不知道该怎么做,有什么想法吗?

rxjs angular

7
推荐指数
1
解决办法
1539
查看次数

TYPO3:如何在我自己的扩展中呈现tt_content文本元素?

我正在编写一个TYPO3扩展,它配置了一个tt_contentUID 列表.这些指向"text"类型的内容元素,我想通过我的扩展来呈现它们.

由于TYPO3s特殊的方式转换您在进入数据库时​​在富文本编辑中输入的文本,并在渲染到前端时再次转换它,我不能只输出该bodytext字段的数据库内容.

我想渲染这些文本,因为它们通常会被TYPO3渲染.我怎么做?

php typo3

6
推荐指数
2
解决办法
6408
查看次数

在使用Equinox Servle Bridge将OSGi应用程序部署到Tomcat时,如何配置Log4J?

使用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"文件的方法,包括:

  • 将context-param"log4jConfigLocation"添加到servlet桥web.xml
  • 在WEB-INF文件夹中创建一个文件夹"classes"并将我的log4j.properties文件复制到那里(并将其复制到其他几个位置)
  • 删除我的log4j包并将"extendedFrameworkExports"设置为org.apache.log4j所以(我猜)使用了tomcat log4j ...这不起作用,因为我的依赖需要一些slf4j类,它们作为log4j包的片段提供. ..不再存在......

当然我也有一个片段包,用log4j.properties文件扩展log4j包,但看起来这个log4j包没有被使用.

补充:我应该补充一点,我正在Eclipse中开发应用程序......我的片段包用于配置log4j/slf4j.

有人解决了这个吗?有任何想法吗?

java tomcat osgi log4j equinox

5
推荐指数
1
解决办法
7056
查看次数

ng2-translate指令:为什么renderer.setText不起作用?

我写了以下指令,因为显然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不包括一个?馊主意?

angular2-directives ng2-translate angular

3
推荐指数
1
解决办法
1581
查看次数