我需要用我知道的分隔符来分割字符串,也不知道.例如,我知道我想用"\n"和","和"."分割字符串.还有1个可以由用户定义的sperator:例如它可以是";" 或"你好"或几乎任何东西.
我试过这个:
"[\n|,|.|".$exp."]"
Run Code Online (Sandbox Code Playgroud)
......但是没有按预期工作.据我所知| 意思是.所以这个reg exp应该说用"\n"或","或"."分隔.或"你好".我认为它是因为如果我尝试[hello]那么它会按每个字母而不是整个字分开.这很奇怪,因为如果我只尝试[\n]那么它只会被"\n"拆分 - 而不是"\"或"n".
有人可以向我解释一下吗?:)
我需要在不更改信任管理器的情况下跳过 httpclient 4.2.1 的主机名验证。我是这样存档的:
httpClient = new DefaultHttpClient(a, b);
SSLSocketFactory socketFactory = (SSLSocketFactory) httpClient.getConnectionManager().getSchemeRegistry().get("https").getSchemeSocketFactory();
socketFactory.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
Run Code Online (Sandbox Code Playgroud)
...但我使用的 setHostnameVerifier 方法已被弃用。如何使用未弃用的方法实现相同的目标?
我对教程有一点误解.这是一个切口:
public class Test {
private int id;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
}
Run Code Online (Sandbox Code Playgroud)
无论如何,我无法理解的是如何引用id.例如,我可以看到在getId方法中,我可以通过只返回id来直接访问先前定义的id.但是在setId方法中,先前定义的id被称为this.id,方法参数是id.
现在,如果在get方法中有"return this.id",那么我会理解一切.但此刻我很困惑.我假设如果我将在set方法中返回id,我将返回参数,而不是类定义的id.总而言之,只要键入"id"就可以加入类定义的id,除非有一个带有相同名称的参数传递?这听起来很奇怪,我错过了什么?
这是关于最佳实践/风格的问题.
我有一个Printer类,可以打印出不同颜色的元素.使用Enum作为输入是否正确:
public class Printer {
public enum Color{RED, GREEN, BLUE}
public void print (Color color){
MyElement myElement = new MyElement();
switch (color) {
case RED:
myElement.setColor("#xxxxxx");
break;
case GREEN:
myElement.setColor("#xxxxxx");
break;
case BLUE:
myElement.setColor("#xxxxxx");
break;
}
myElement.print();
}
}
Run Code Online (Sandbox Code Playgroud)
然后从另一个类中调用该方法,如下所示:
Printer p = new Printer();
p.print(Printer.Color.RED);
Run Code Online (Sandbox Code Playgroud)
...或者将值添加到枚举中会更好:
public class Printer {
public enum Color {
RED("#xxxxxx"),
GREEN("#xxxxxx"),
BLUE("#xxxxxx");
private final String hex;
Color(String hex){
this.hex = hex;
}
public String getHex(){
return this.hex;
}
}
public void print (Color …Run Code Online (Sandbox Code Playgroud) 我有一个cmd,我从服务器获取页面的内容.然后内容可以包括HTML和链接.问题是,当我显示此数据时,链接不起作用.当看到页面源时,事实证明"routerLink"被转换为"路由器链接",这就是为什么它可能不起作用.这是我的代码:
我的班级,注意到routerLink在这里是camelcase:
export class TwoComponent implements OnInit {
data = '<a routerLink="/one">ONE</a>'; //this will actually come from backend server
constructor() { }
ngOnInit() {}
}
Run Code Online (Sandbox Code Playgroud)
而我的HTML:
<div [innerHTML]="data | bypassSecurity"></div>
Run Code Online (Sandbox Code Playgroud)
当我加载这个页面并查看源代码时,routerLink现在是小写的:
<a routerlink="/one">ONE</a>
Run Code Online (Sandbox Code Playgroud)
起初,我认为它是旁路安全管道负责,但我检查了管道的输出,routerLink仍然在那里的驼峰.所以它似乎发生在其他地方.以防这里是我的bypassSecurity管道:
export class BypassSecurityPipe implements PipeTransform {
constructor(private sanitized: DomSanitizer) {}
transform(value): any {
return this.sanitized.bypassSecurityTrustHtml(value);
}
}
Run Code Online (Sandbox Code Playgroud)
关于这种小写转换发生的位置和原因的任何建议将不胜感激:)
在 laravel 5.4 中,是否可以在不登录的情况下对用户进行身份验证?从 laravel 文档中我能找到的最接近的东西是:
Auth::once($credentials)
Run Code Online (Sandbox Code Playgroud)
但这仍然使用户在该请求期间登录。我所需要的只是知道具有该电子邮件和密码的用户是否存在。
运行Gitlab CI管道时出现此错误。据我了解,错误表明我正在尝试在Windows docker-engine上运行Linux类型的docker映像?但问题是我正在使用Windows docker映像。可能是什么问题呢?
错误:作业失败:执行程序需要OSType = linux,但是Docker Engine仅支持OSType = windows
我的CI:
image: hello-world:nanoserver
stages:
- build
build1:
stage: build
script:
- echo "Hello world"
Run Code Online (Sandbox Code Playgroud) 我在angular 4项目中有警报服务。所有组件都可以在该服务中设置警报,但是只有一些组件可以显示警报,而每个组件都可以在唯一的位置显示警报。所以我的问题是,如何在所有html文件中定义从服务获取变量?
我的服务如下所示:
import { Injectable } from '@angular/core';
@Injectable()
export class AlertService {
message;
constructor() { }
setMessage(message){
this.message = message;
}
}
Run Code Online (Sandbox Code Playgroud)
要设置消息的组件只需导入服务并调用setMessage方法。但是当我尝试在html文件中使用消息时,例如:
{{message}}
Run Code Online (Sandbox Code Playgroud)
然后超出范围。如何使该消息在所有组件的所有html文件中均可访问?
也许有比服务变量更好的方法来解决这种需求?
我在会话中保留了用户登录和注销时使用的不同内容。问题是当用户注销时,laravel 会清除我在会话中存储的所有内容:
发生这种情况是因为 laravel 核心类 AuthenticatesUsers 看起来像这样:
/**
* Log the user out of the application.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function logout(Request $request)
{
$this->guard()->logout();
$request->session()->invalidate();
return redirect('/');
}
Run Code Online (Sandbox Code Playgroud)
因为我不想更改核心类,如何避免在用户注销时丢失会话数据?
我有一种情况,我想拦截/覆盖外部(我没有访问它们)对象的方法.我的情况的一个例子:
我有一个外部对象:
public class ExternalObject {
private String name;
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
Run Code Online (Sandbox Code Playgroud)
一个外部阶级女巫使用它:
public class ExternalClass {
public static void main(String[] args) {
ExternalObject o = new ExternalObject();
o.setName("Tom");
MyClass.doSomething(o);
o.setName("Jerry");
System.out.print(o.getName());
}
}
Run Code Online (Sandbox Code Playgroud)
然后有MyClass女巫有一个机会来访问外部对象:
public class MyClass {
public static void doSomething(ExternalObject o){
}
}
Run Code Online (Sandbox Code Playgroud)
是否可以覆盖或修改MyClass中的setName方法?我需要的是setName方法检查名称是否是"jerry"然后将其更改回"tom",如果没有,则执行原始方法的操作.
像这样的东西:
public void mySetName(String name){
if(name.equals("Jerry"){
name = "Tom";
}
doWhatOriginalMethodDoes();
}
Run Code Online (Sandbox Code Playgroud)
因此,如果有人像现在一样运行外部类,那么Tom将被打印两次.
顺便说一句,外部(原始)对象和方法非常复杂.我已经四处搜索,这应该可以与reflect.Proxy做,但我不能让它工作.
谢谢你的帮助!:)
java ×4
php ×3
angular ×2
laravel ×2
laravel-5.4 ×2
angular-cli ×1
docker ×1
enums ×1
gitlab ×1
gitlab-ci ×1
javascript ×1
laravel-5 ×1
regex ×1
ssl ×1
syntax ×1
typescript ×1