我对字符串替换有一些问题,特别是我有一个返回数组的php,每个数组索引都包含一个特定的翻译字符串。基本上,这个数组保存在GlobalVariables.language['hello_world']
里面,例如返回Hello world
。
现在我有一个包含这个翻译字符串的数组索引:
wait $seconds seconds before try again
我将秒数设置在一个作为倒计时的间隔函数中:
setInterval(function ()
{
minutes = parseInt(timer / 60, 10);
seconds = parseInt(timer % 60, 10);
minutes = minutes < 10 ? "0" + minutes : minutes;
seconds = seconds < 10 ? "0" + seconds : seconds;
text = text.replace('$seconds', seconds);
console.log(text);
$('.alert').text(text);
if (--timer < 0)
{
timer = 0; //Stoppo il timer
}
}, 1000);
这将返回如下字符串:
wait 20 seconds before try again
但只是第一次,'因为后来字符串的$ seconds部分已被替换,我虽然只替换第二次计时的数字文本数量,但我不能这样做'因为在调用setInterval之前我将该字符串附加到包含数字编号的另一个字符串。
我该如何解决这个问题?
答案 0 :(得分:1)
不要替换原始变量,而是使用不同的变量。
public void showFileChooser() {
Intent imageDownload = new Intent(Intent.ACTION_PICK,
android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
imageDownload.putExtra("crop", "true");
imageDownload.putExtra("aspectX", 4);
imageDownload.putExtra("aspectY", 3);
imageDownload.putExtra("outputX", 800);
imageDownload.putExtra("outputY", 600);
imageDownload.putExtra("return-data", true);
startActivityForResult(imageDownload, 2);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 2 && resultCode == RESULT_OK && null != data) {
Bundle extras = data.getExtras();
bitmap1 = extras.getParcelable("data");
imageView1.setImageBitmap(bitmap1);
}
}
将始终包含text
: -
$seconds
答案 1 :(得分:1)
首次在字符串中找到$seconds
。但是下一次(第二次迭代)因$seconds
中不存在text
,因此不会被替换。
您应该使用元素保留原始内容并将其用作模板。
//Perists original text with element
var alertElem = $('.alert');
alertElem.data('text', text);
setInterval(function (){
minutes = parseInt(timer / 60, 10);
seconds = parseInt(timer % 60, 10);
minutes = minutes < 10 ? "0" + minutes : minutes;
seconds = seconds < 10 ? "0" + seconds : seconds;
alertElem.text(function(){
return alertElem.data('text').replace('$seconds', seconds)
});
if (--timer < 0)
{
timer = 0;
}
}, 1000);