我有以下模板字符串:"Hello [Name] Please find attached [Invoice Number] which is due on [Due Date]".
我还有名称,发票号和截止日期的字符串变量 - 用变量替换模板中的标记的最佳方法是什么?
(请注意,如果变量恰好包含令牌,则不应替换它).
编辑
感谢@laginimaineb和@ alan-moore,这是我的解决方案:
public static String replaceTokens(String text,
Map<String, String> replacements) {
Pattern pattern = Pattern.compile("\\[(.+?)\\]");
Matcher matcher = pattern.matcher(text);
StringBuffer buffer = new StringBuffer();
while (matcher.find()) {
String replacement = replacements.get(matcher.group(1));
if (replacement != null) {
// matcher.appendReplacement(buffer, replacement);
// see comment
matcher.appendReplacement(buffer, "");
buffer.append(replacement);
}
}
matcher.appendTail(buffer);
return buffer.toString();
}
Run Code Online (Sandbox Code Playgroud) Google已将谷歌Chrome中使用的自动更新机制开源为奥马哈.
对于任何不是谷歌的人来说,配置似乎相当复杂和困难.在项目中使用奥马哈的经验是什么?可以推荐吗?
我将用于将CMYK jpeg转换为RGB的Java代码导致输出图像太亮 - 请参阅下面的代码.任何人都可以建议正确的转换方式吗?
以下代码需要Java Advanced Image IO来读取jpeg和example-cmyk.jpg
import java.awt.image.BufferedImage;
import java.awt.image.ColorConvertOp;
import java.io.File;
import javax.imageio.ImageIO;
public class TestCmykToRgb {
public static void main(String[] args) throws Exception {
BufferedImage cmykImage = ImageIO.read(new File(
"j:\\temp\\example-cmyk.jpg"));
BufferedImage rgbImage = new BufferedImage(cmykImage.getWidth(),
cmykImage.getHeight(), BufferedImage.TYPE_INT_RGB);
ColorConvertOp op = new ColorConvertOp(null);
op.filter(cmykImage, rgbImage);
ImageIO.write(rgbImage, "JPEG", new File("j:\\temp\\example-rgb.jpg"));
}
}
Run Code Online (Sandbox Code Playgroud) 我的Java SWT桌面应用程序与它自己的Java运行时一起分发,我想让下载大小尽可能小.我想从rt.jar中删除我不使用的所有类,但根据JDK运行时许可证这是禁止的(请参阅根JDK文件夹中的README.html文件).
由于Java是开源的,我是否允许从源代码编译我自己的"Java"运行时没有这种分发限制?如果是这样,有没有人这样做过?(或者你只是忽略JDK许可条款?)
我有一个应用程序,在用户触摸屏幕的位置显示一个黑点,如下所示:
当用户将他的手指拖到屏幕上时,用户可以移动黑点.
背景是一个昂贵的绘制操作,所以我在堆栈中创建了两个单独的小部件,希望背景小部件绘画将存储在Flutter栅格缓存中.但它没有存储 - 每当黑点移动时,Flutter就会调用我昂贵的绘画方法.
我究竟做错了什么?
这是我的代码:
import 'package:flutter/material.dart';
import 'dart:math';
void main() {
runApp(new MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new MaterialApp(
home: new MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
@override
State createState() => new MyHomePageState();
}
class MyHomePageState extends State<MyHomePage> {
GlobalKey _paintKey = new GlobalKey();
Offset _offset;
@override
Widget build(BuildContext context) {
return new Scaffold(
body: new Stack(
fit: StackFit.expand,
children: <Widget>[
new CustomPaint(
painter: new ExpensivePainter(), …Run Code Online (Sandbox Code Playgroud) 我正在尝试在Microsoft Outloook 15.6版中打开一个新的消息窗口并填充包括附件在内的字段.这是我的动作代码:
tell application "Microsoft Outlook"
set newMessage to make new outgoing message with properties {subject:"Hooray for automation"}
make new recipient at newMessage with properties {email address:{name:"Jim Shank", address:"jim.shank@example.com"}}
make new attachment at the end of newMessage with properties {file:"/tmp/Invoice INV2 - Paul.pdf"}
open newMessage
end tell
Run Code Online (Sandbox Code Playgroud)
(此消息源自此堆栈溢出问题).
但是,我收到此错误:256:398:执行错误:Microsoft Outlook出错:保存更改的记录属性时出错.(-2700)
是否可以使用actionscript在最新版本的Outlook中打开新邮件?
我想允许Alice创建公钥/私钥对,以便Bob可以发送她的机密消息.但是,我希望Alice能够从任何地方检查她的消息,并且她必须携带包含她的私钥的记忆棒是一件痛苦的事.Alice是否有某种方法可以根据她记得的密码创建公钥/私钥对?通过这种方式,她可以随时生成私钥(和公钥).
这个问题的简短版本是:我在哪里可以找到cryptico.js的Java等价物.
另外,这是关于Stack Overflow 的相同问题,但是对于javascript.
编辑:这是我第一次尝试解决方案:
SecureRandom saltRand = new SecureRandom(new byte[] { 1, 2, 3, 4 });
byte[] salt = new byte[16];
saltRand.nextBytes(salt);
int keyLength = 3248;
SecretKeyFactory factory = SecretKeyFactory
.getInstance("PBKDF2WithHmacSHA1");
KeySpec spec = new PBEKeySpec(password.toCharArray(), salt, 8192, keyLength);
SecretKey key = factory.generateSecret(spec);
SecureRandom keyGenRand = SecureRandom.getInstance("SHA1PRNG");
keyGenRand.setSeed(key.getEncoded());
KeyPairGenerator gen = KeyPairGenerator.getInstance("RSA");
gen.initialize(keyLength, keyGenRand);
java.security.KeyPair p = gen.generateKeyPair();
Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个SimpleDialog允许用户输入其名称的内容.但是当它显示时,对话框被屏幕键盘隐藏了一半:
如何Dialog让它完全可见?
编辑:我觉得奇怪的是,主页小部件(FocusVisibilityDemo)识别出降低的高度,因此调整"推送我"按钮的位置以保持在中心.不幸的是,对话框的行为方式不同.
这是我的代码:
import 'package:flutter/material.dart';
class FocusVisibilityDemo extends StatefulWidget {
@override
_FocusVisibilityDemoState createState() => new _FocusVisibilityDemoState();
}
class _FocusVisibilityDemoState extends State<FocusVisibilityDemo> {
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(title: new Text('Text Dialog Demo')),
body: new Center(
child: new RaisedButton(
onPressed: _showDialog,
child: new Text("Push Me"),
),
),
);
}
_showDialog() async {
await showDialog<String>(
context: context,
child: new AlertDialog(
contentPadding: const EdgeInsets.all(16.0),
content: new Row(
children: <Widget>[
new Expanded(
child: new …Run Code Online (Sandbox Code Playgroud) 我正在使用存档包来扩展 zip 文件,如下所示:
final bytes = new File(zippedFile).readAsBytesSync();
final archive = new ZipDecoder().decodeBytes(bytes);
for (var file in archive) {
final filename = '/Users/mark/blah/${file.name}';
if (file.isFile) {
var outFile = new File(filename);
outFile = await outFile.create(recursive: true);
await outFile.writeAsBytes(file.content);
} else {
await new Directory(filename)
.create(recursive: true);
}
}
Run Code Online (Sandbox Code Playgroud)
问题是我在 Flutter 中的 UI 线程不时挂起,导致 CircularProgressIndicator 出现卡顿 - 我怀疑问题出在对 file.content 的调用上。如何在不阻塞 UI 线程的情况下调用它?我需要使用隔离吗?
Apple指南谈到使用源列表 - 如何在Carbon或Cocoa中创建此源列表?这个组件的某个地方是否有官方API?
java ×4
dart ×2
flutter ×2
actionscript ×1
auto-update ×1
cmyk ×1
encryption ×1
licensing ×1
macos ×1
outlook ×1
regex ×1
templates ×1