我一直试图在第一个var GOBLINS = GOBLINS || {};
GOBLINS.View = function() {};
GOBLINS.View.prototype.draw = function(objects) {
for(i=0; i < objects.length; i++) {
ctx.drawImage(objects[i],0,0);
};
};
GOBLINS.View.prototype.update = function(data){
this.draw(data);
};
GOBLINS.Model = function() {
this.data = [];
};
GOBLINS.Model.prototype.player = {
hitPoints: 25,
x: 15,
y: 20,
img: new Image(),
push: function() {
data.push(GOBLINS.Model.player.img);
}
};
GOBLINS.Model.prototype.getData = function(recall){
recall(this.data);
};
GOBLINS.Controller = function() {
var M = new GOBLINS.Model();
var V = new GOBLINS.View();
this.mainLoop();
};
GOBLINS.Controller.prototype.mainLoop = function() {
var self = this;
this.M.getData(function(data){
self.V.update(data);
});
window.requestAnimationFrame(function(){
self.mainLoop();
});
};
window.onload = function() {
var game = new GOBLINS.Controller();
GOBLINS.Model.player.img.src = "Image/Player.png";
var c=document.getElementById("gameCanvas");
var ctx=c.getContext("2d");
};
符号出现后提取一部分字符串。例如,字符串看起来像^
。我需要提取abc^28092015^def^1234
夹在前两个28092015
标志之间。
所以,我需要从第一个^
符号的出现中提取8个字符。我一直试图提取第一个^
符号的位置,然后将其用作substr函数中的参数。
我试着用这个:
^
参考所讨论的答案here。
但它继续回到最后一个位置。有人可以帮帮我吗?
答案 0 :(得分:3)
我会使用sub。
x <- "^28092015^def^1234"
sub("^.*?\\^(.*?)\\^.*", "\\1", x)
# [1] "28092015"
由于^
是正则表达式中的特殊字符,因此您需要按顺序转义该字符以匹配文字^
符号。
或强>
分割^
并获取第二个索引的值。
strsplit(x,"^", fixed=-T)[[1]][2]
# [1] "28092015"
或强>
您可以使用gsub
aslo。
gsub("^.*?\\^|\\^.*", "", x, perl=T)
# [1] "28092015"
答案 1 :(得分:2)
这是基础R的一个选项:
x <- "abc^28092015^def^1234"
m <- regexpr("(?<=\\^)(.+?)(?=\\^)", x, perl = TRUE)
##
R> regmatches(x, m)
#[1] "28092015"
答案 2 :(得分:1)
x <- 'abc^28092015^def^1234'
library(qdapRegex)
unlist(rm_between(x, '^', '^', extract=TRUE))[1]
# [1] "28092015"
答案 3 :(得分:1)
另一个选项是来自stri_extract_first
library(stringi)
library(stringi)
stri_extract_first_regex(str1, '(?<=\\^)\\d+(?=\\^)')
#[1] "28092015"
如果是两个^
stri_extract(str1, regex='(?<=\\^)[^^]+')
#[1] "28092015"
str1 <- 'abc^28092015^def^1234'
答案 4 :(得分:1)