回答:
文字列をスペースで分割し、「#」で始まらない場合はトークンから数字を削除して貼り付けます。
x <- "table9 dolv5e #10n #dec10 #nov8e 23 hello"
y <- unlist(strsplit(x, ' '))
paste(ifelse(startsWith(y, '#'), y, sub('\\d+', '', y)), collapse = ' ')
# output
[1] "table dolve #10n #dec10 #nov8e hello"
桁を削除するには、gsubを使用します。次に例を示します。
gsub("[0-9]","","table9")
"table"
そして、strsplitを使用して文字列を分割できます。
STRING = "table9 dolv5e #10n #dec10 #nov8e 23 hello"
strsplit(STRING," ")
[[1]]
[1] "table9" "dolv5e" "#10n" "#dec10" "#nov8e" "23" "hello"
「#」を持たない要素にのみ適用するgsubを使用して、STRINGを反復処理するだけです
STRING = unlist(strsplit(STRING," "))
no_hex = !grepl("#",STRING)
STRING[no_hex] = gsub("[0-9]","",STRING[no_hex])
paste(STRING,collapse=" ")
[1] "table dolve #10n #dec10 #nov8e hello"
ベースRソリューション:
unlisted_strings <- unlist(strsplit(X, "\\s+"))
Y <- paste0(na.omit(ifelse(grepl("[#]", unlisted_strings),
unlisted_strings,
gsub("\\d+", "", unlisted_strings))), collapse = " ")
Y
データ:
X <- as.character("table9 dolv5e #10n #dec10 #nov8e 23 hello")
INPUT = "table9 dolv5e #10n #dec10 #nov8e 23 hello";
OUTPUT = INPUT.match(/[^#\d]+(#\w+|[A-Za-Z]+\w*)/gi).join('');
フラグを削除できます。i
大文字と小文字は区別されません。
次のパターンを使用します。 [^#\d]+(#\w+|[A-Za-Z]+\w*)
[^#\d]+
=#と数字なしで始まる文字=#を
#\w+
検索し、その後に数字または文字を続ける[A-Za-z]+\w*
=文字を検索し、その後に文字または数字、あるいはその両方を
検索する^ | \D+\S*
=でこれを変更できます。最初の文字だけでなく、その後に文字や数字が続くだけでなく、任意の文字を検索できます。= \w+\w*
と\w
同じ原因ではないです[\w\d]
。
私はJavaScriptでコードを試してみましたが、うまくいきました。文字だけでなく一致する場合は、コードを使用できます