问题:我有成千上万的文档,其中包含我不想要的特定字符.比如角色a
.这些文档包含各种字符,但a
我要替换的是双引号或单引号.
我想找到并替换它们,我认为需要使用正则表达式.我正在使用VSCode,但我对任何建议持开放态度.
我的尝试:我能够找到以下正则表达式匹配包含其中的值的特定字符串()
.
".*?(r).*?"
Run Code Online (Sandbox Code Playgroud)
但是,这仅突出显示整个报价.我想只突出这个角色.
任何解决方案,可能在正则表达式之外,都是受欢迎的.
示例结果:给定,字符是a
,find替换为b
Somebody once told me "apples" are good for you
=> Somebody once told me "bpples" are good for you
"Aardvarks" make good kebabs
=> "Abrdvbrks" make good kebabs
The boy said "aaah!" when his mom told him he was eating aardvark
=> The boy said "bbbh!" when his mom told him he was eating aardvark
这可能只是一个Ionic 2问题,因为我没有在Angular 2文档中看到NavParams,但是有些概念可能会翻译,所以我标记了两者.
鉴于我navparams.get('somekey')
为了侦听传入的参数而调用,在测试中模拟NavParams是很棘手的.
例如,以下是我目前的工作方式:
export class NavParamsMock {
public get(key): any {
return String(key) + 'Output';
}
}
Run Code Online (Sandbox Code Playgroud)
这适用于真正的基本测试,但如果我有一个组件,我必须测试它gets
是一种特定类型Object
,例如a User
.
然后,我可以做类似的事情
export class NavParamsMock {
public get(key): any {
if (key === 'user') {
return new User({'name':'Bob'})
}
return String(key) + 'Output';
}
}
Run Code Online (Sandbox Code Playgroud)
但是,如果您想get(user)
在另一个测试中使用,或者甚至是另一个组件的规范,则这不起作用.假设您在两个不同的组件中使用NavParams,并且当您这样做时它们都期望不同的结果get(user)
,模拟变得越来越棘手.
有没有人找到这种情况的解决方案?
在我的Rails应用程序中,我使用模型方法中的CSV.open块创建CSV文件.
class SomeModel
def self.write_csv
CSV.open("my_file_name.csv", "w") do |csv|
### inserts lines into the file ###
end
end
end
Run Code Online (Sandbox Code Playgroud)
在我的控制器中,我有一个动作将文件发送到用户输入的电子邮件地址
def some_controller_method
SomeModel.write_csv
email = params[:email]
JobMailer.send_csv(email).deliver
end
Run Code Online (Sandbox Code Playgroud)
在JobMailer
,我直接通过文件名引用文件,因为CSV.open
块SomeModel.write_csv
将文件保存到主目录的磁盘上.
def send_csv(email)
attachments['my_file_name.csv'] = {mime_type: 'text/csv', content: File.read(Rails.root.join('your_file.csv'))}
mail(to: email, subject: 'My subject', body: 'My body.')
end
Run Code Online (Sandbox Code Playgroud)
目前,当新的请求进入时,应用程序将重写该文件,我相信当我在Heroku上进行生产时,它会在一段时间后自动删除它.
回顾一下:
可以在不将其保存到磁盘的情况下完成吗?有没有更好的办法?
我一直在阅读有关压缩/重新定位/修改已经与您的团队成员共享的提交的危险。如果团队要求进行这种更改,我们该怎么做?
是不是每个人都停止提交文件,只让一个人重写历史,推送到 GitHub,然后让每个人拉取 + 恢复工作?
编辑:我正在寻找来自 Graphql-Angular 社区的权威和来源答案,以提供最佳实践示例。
例如,我们在 TypeScript 中定义了一个 Person 类型:
interface Person {
firstName: string;
lastName: string;
birthDate: Date;
age: number;
...and many more attributes
}
Run Code Online (Sandbox Code Playgroud)
假设您有一个组件,并且根据 graphql 的口头禅,您只获取您需要的内容。没有过度获取和不足获取。
我只需要Person
和firstName
,age
所以我在 Apollo 查询中进行了它。
现在,我如何输入我刚刚获取的这个对象?
该结构是 的一部分Person
,所以我倾向于简单地这样做Partial<Person>
。这使得所有声明的属性都是Person
可选的。
但这不是这里发生的事情。Person
我们仅使用age
和来提取 的一部分firstName
。就是这样。
除了制作另一个界面之外,是否没有其他方法可以正确输入:
interace MyComponentPerson {
firstName: string;
age: number;
}
Run Code Online (Sandbox Code Playgroud)
有官方的风格指南/方法来做到这一点吗?我问过他们,但没有得到答复。也查看了文档,没有看到任何与此相关的内容。
在我的模型中,我首先检查Sudoku
数据库中是否存在记录,然后再获取它solution
或创建它。
if Sudoku.exists?(puzzle: puzzle)
return Sudoku.find_by(puzzle: puzzle).solution
else
**solve it and save it into the db**
end
Run Code Online (Sandbox Code Playgroud)
这样做有什么区别:
if Sudoku.find_by(puzzle: puzzle)
return Sudoku.find_by(puzzle: puzzle).solution
else
**solve it and save it into the db**
end
Run Code Online (Sandbox Code Playgroud)
日志 exists?
Sudoku Exists (0.0ms) SELECT 1 AS one FROM "sudokus" WHERE "sudokus"."puzzle" = $1 LIMIT 1 [["puzzle", "390820700801500069020160403002096058935000602060752030703941000200037590019000347"]]
Sudoku Load (0.0ms) SELECT "sudokus".* FROM "sudokus" WHERE "sudokus"."puzzle" = $1 LIMIT 1 [["puzzle", "390820700801500069020160403002096058935000602060752030703941000200037590019000347"]]
Completed 200 OK in 8ms (Views: 0.2ms | …
Run Code Online (Sandbox Code Playgroud) 在 Sublime Text 3 中,当您启动分屏时,每个窗格都可以有空容器。然而,在 Atom 中,当您关闭最后一个时,它就会消失。这有什么技巧吗?
此.scss文件中的几种颜色定义如下:
$colors: (
primary : #cd0e11,
secondary: #23aa0b,
danger: #f53d3d,
light: #f4f4f4,
dark: #222
);
Run Code Online (Sandbox Code Playgroud)
我如何访问它们?说我想把东西设置为主要的.
我试过了:
h1 {
color: $colors:primary
}
Run Code Online (Sandbox Code Playgroud)
这是Ionic 2,所以它可能是一个特定于框架的东西.
使用Jasmine和Karma进行测试,我正在使用该zxcvbn
库进行一些密码强度计算.当我尝试通过调用updateScore()
下面的函数来运行规范时,这会失败.
private updateScore(): void {
const analysis = zxcvbn(this.password)
this.score = analysis.score;
this.comment = analysis.feedback.warning || analysis.feedback.suggestions[0];
}
Run Code Online (Sandbox Code Playgroud)
在导入中,我正在做 import zxcvbn from 'zxcvbn';
这适用于应用程序,甚至在我构建和模拟时,但在规范中,它给了我这个错误:
FAILED TESTS:
PasswordStrengthChecker
? should update the score when password changes
Chrome 55.0.2883 (Mac OS X 10.11.6)
TypeError: zxcvbn_1.default is not a function
at PasswordStrengthChecker.updateScore (webpack:///src/components/password-strength-checker/password-strength-checker.ts:25:28 <- src/test.ts:93920:40)
at PasswordStrengthChecker.ngOnChanges (webpack:///src/components/password-strength-checker/password-strength-checker.ts:20:9 <- src/test.ts:93916:14)
at Object.<anonymous> (webpack:///src/components/password-strength-checker/password-strength-checker.spec.ts:27:13 <- src/test.ts:185997:18)
at ZoneDelegate.invoke (webpack:///~/zone.js/dist/zone.js:232:0 <- src/test.ts:183822:26)
at ProxyZoneSpec.onInvoke (webpack:///~/zone.js/dist/proxy.js:79:0 <- src/test.ts:130574:39)
at ZoneDelegate.invoke (webpack:///~/zone.js/dist/zone.js:231:0 <- …
Run Code Online (Sandbox Code Playgroud) 首先,spyOnProperty
给我Property user does not have access type get
这一行:spyOnProperty(userService, 'user', 'get').and.returnValue(Observable.of(adminUser));
我有一个具有这样的user
属性的UserService :
export class UserService {
user: BehaviorSubject<User> = new BehaviorSubject(new User());
}
Run Code Online (Sandbox Code Playgroud)
我测试的组件需要根据的结果更改行为userService.user.subscribe
。因此,我需要能够监视user
。
我曾经想过的一个想法是,例如getUser()
在类UserService上编写一种方法getter ,并且不要user
通过属性进行访问。
但这似乎有些极端。
有任何想法吗?
在Angular中,实际上是使用env var加载到应用程序中的,environment.ts
这是cli的一部分。
在NativeScript中,这似乎不适用于NativeScript cli。
最好的方法是什么?
以 FizzBuzz 为例,for 循环中的这个 switch case 在每个 case 之后使用 break。
for (num = 1; num <= 100000; num ++) {
switch (true) {
case (num % 15 == 0):
console.log("FizzBuzz");
break;
case (num % 3 == 0):
console.log("Fizz");
break;
case (num % 5 == 0):
console.log("Buzz");
break;
default:
console.log(num);
break;
}
}
Run Code Online (Sandbox Code Playgroud)
在 Mozilla 的文档中,他们说...
与每个 case 标签相关联的可选 break 语句确保程序在执行匹配的语句后中断 switch 并在 switch 之后的语句处继续执行。如果省略 break ,程序将在 switch 语句中的下一个语句处继续执行。
我假设它们的意思是当脚本检查 num % 15 == 0 时,如果没有中断并且即使它匹配 true,它也会转到 …
angular ×4
ionic2 ×3
activerecord ×1
apollo ×1
atom-editor ×1
csv ×1
git ×1
github ×1
graphql ×1
heroku ×1
jasmine ×1
javascript ×1
loops ×1
nativescript ×1
regex ×1
ruby ×1
sass ×1
string ×1
typescript ×1
unit-testing ×1