这是我在Java String.indexOf()
和String.contains()
方法中发现的奇怪行为.如果我有一个非空字符串说blablabla
,我试图在其中寻找一个空字符串,它总是返回,true
而我希望它返回false
.
所以基本上,为什么下面的代码返回true和0?
String testThis = "";
String fileName = "blablablabla";
System.out.println(fileName.contains(testThis));
System.out.println(fileName.indexOf(testThis));
Run Code Online (Sandbox Code Playgroud)
逻辑上(至少对我来说)""
并没有发生,blablablabla
但是indexOf("")
说它确实如此,为什么?
我正在使用这个出色的repo vdenotaris / spring-boot-security-saml-sample作为指南,并且尝试将其设置为验证和解密包含的传入SAML消息EncryptedAssertion
。
idP的元数据定义XML中的签名和加密密钥。这是在服务提供商中设置的。
@Bean
public ExtendedMetadata extendedMetadata() {
ExtendedMetadata extendedMetadata = new ExtendedMetadata();
extendedMetadata.setIdpDiscoveryEnabled(false);
extendedMetadata.setSignMetadata(false);
extendedMetadata.setEcpEnabled(true);
return extendedMetadata;
}
@Bean
@Qualifier("metadata")
public CachingMetadataManager metadata() throws MetadataProviderException {
List<MetadataProvider> providers = new ArrayList<MetadataProvider>();
try {
ClasspathResource metadata = new ClasspathResource("/metadata/the-idp-metadata.xml");
Timer timer = new Timer(true);
ResourceBackedMetadataProvider provider = new ResourceBackedMetadataProvider(timer, metadata);
provider.setParserPool(ParserPoolHolder.getPool());
provider.initialize();
ExtendedMetadataDelegate exMetadataDelegate = new ExtendedMetadataDelegate(provider, extendedMetadata());
exMetadataDelegate.setMetadataTrustCheck(true);
exMetadataDelegate.setMetadataRequireSignature(false);
providers.add(exMetadataDelegate);
}
catch(ResourceException ex) {
throw new MetadataProviderException(ex.getMessage(), ex);
}
CachingMetadataManager cmm = new CachingMetadataManager(providers); …
Run Code Online (Sandbox Code Playgroud) java spring-security saml-2.0 spring-boot spring-security-saml2
我已经使用express编写了一个NodeJS应用程序,代理了对外部API的一些调用.所以我正在尝试使用Mocha和Sinon编写单元测试.我的目标是测试应用程序没有任何互联网连接,所以我试图模拟https请求并返回模拟回复.
我遇到了一个问题,我无法找到适合我案例的任何示例或教程.我的节点应用程序在端口8081上侦听http请求,然后将它们代理到另一个站点.我想测试我的应用程序而不必将请求实际发送到那些外部服务器.我在下面尝试它,我把我要发送的json回复发送回server.respondsWith()函数.
我是否通过与chai进行ajax调用以正确的方式进行此操作?或者我应该以某种方式在我的应用程序内发送请求.任何帮助表示赞赏.
var assert = require('assert');
var chai = require('chai');
var spies = require('chai-spies');
var chaiHttp = require('chai-http');
var https = require('https');
var should = chai.should();
var expect = chai.expect;
var sinon = require('sinon');
chai.use(spies);
chai.use(chaiHttp);
describe('Car Repository', function() {
var server;
before(function() {
server = sinon.fakeServer.create();
});
after(function() {
server.restore();
});
var url = 'http://127.0.0.1:8081';
it('should succeed and return a list of cars', function(done) {
server.respondWith('POST', 'https://api.sandbox.cars.com/v2/token_endpoint', JSON.stringify({"access_token":"1t3E4IykfpJAbuFsdfM2oFAo5raB5vhfOV0hAYe","token_type":"bearer","expires_in":604800}));
server.respondWith('GET', url+'/cars', JSON.stringify({'test':'this works'}));
chai.request(url)
.get('/cars')
.end(function(err, res) {
if …
Run Code Online (Sandbox Code Playgroud) 我遇到的情况是我的文本包含URL链接。链接有2种形式
我正在尝试创建一个使用正则表达式的简单函数,该函数将使用HREF标签包装所有类型为1的链接,而将其他已经包装好的链接保留为孤独。
我有这样的事情,但没有成功。
function replaceURLWithHTMLLinks(text) {
var exp = /(<(\s*)a(\s)*href.*>.*<\/(\s)*a(\s*)>)/ig;
var matches = exp.exec(text);
for(var i=0; i < matches.length; i++) {
var line = matches[i];
if(!exp.test(line)) {
var exp2 = /(\b(?:(?:(?:https?|ftp|file):\/\/|www\.|ftp\.)[-A-Z0-9+&@#\/%?=~_|$!:,.;]*[-A-Z0-9+&@#\/%=~_|$])|”(?:(?:https?|ftp|file):\/\/|www\.|ftp\.)[^"\r\n]+”?|’(?:(?:https?|ftp|file):\/\/|www\.|ftp\.)[^'\r\n]+’?)/ig;
text = text.replace("http://","");
text = text.replace(exp2, "<a href=http://$1>$1</a>");
}
}
return text;
}
Run Code Online (Sandbox Code Playgroud)
它不起作用,但希望有人可以解决它:)
编辑
通过@MikeM答案修复它的解决方案
function replaceLinksSO(text) {
rex = /(<a href=")?(?:https?:\/\/)?(?:(?:www)[-A-Za-z0-9+&@#\/%?=~_|$!:,.;]+\.)+[-A-Za-z0-9+&@#\/%?=~_|$!:,.;]+/ig;
return text.replace(rex, function ( $0, $1 ) {
if(/^https?:\/\/.+/i.test($0)) {
return $1 ? $0: '<a href="'+$0+'">'+$0+'</a>';
}
else {
return $1 …
Run Code Online (Sandbox Code Playgroud) java ×2
http ×1
javascript ×1
mocha.js ×1
node.js ×1
regex ×1
saml-2.0 ×1
sinon ×1
spring-boot ×1
string ×1
unit-testing ×1