假设我有类似的字符串:
"0cGy-GCSF6hr-f-m5"
"100cGy-LPS12hr-m-m2"
"300cGy-NOTRT24hr-f-m2"
"0cGy-6h-m1"
它有点复杂,但我想要的是从它们中检索到:
"GCSF", "LSP", "NOTRT", "NOTRT"
表示如果没有" GCSF"," LSP"," NOTRT",则返回" NOTRT"。 和h / hr之前的整数
6, 12, 24, 6
我已经尝试了一段时间,但非常沮丧。有人有好主意吗?
答案 0 :(得分:4)
你的意思是这样吗?
string currentDir=Directory.GetCurrentDirectory();
if (defaultButtonClicked)
{
_csvFilePath = Path.Combine(currentDir, "File Name_" + DateTime.Now.AddDays(-1).ToString("MM-dd-yyyy") + ".xls");
defaultButtonClicked = false;
}
else if (dateSpecificSearchButtonClicked)
{
var dateTemp = calChoosedate.Value.ToString("MM-dd-yyyy");
_csvFilePath = Path.Combine(currentDir, "File Name_" + dateTemp + ".xls");
dateSpecificSearchButtonClicked = false;
}
workBook.SaveAs(_csvFilePath, Excel.XlFileFormat.xlOpenXMLWorkbook, Type.Missing, Type.Missing, true, false, Excel.XlSaveAsAccessMode.xlNoChange, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
workBook.Close(true, misValue, misValue);
System.Runtime.InteropServices.Marshal.ReleaseComObject(application)
答案 1 :(得分:2)
这是一个使用' dplyr'的版本和' stringr'返回向量而不是列表并放置" NOTRT"在空插槽中为字符簇,6在空插槽中为数字:
library(dplyr)
library(stringr)
letters <- s %>%
str_extract_all("[A-Z]+(?=[0-9]+hr?)") %>%
lapply(., function(x) {if (length(x)==0) {"NOTRT"} else {x} }) %>%
unlist(.)
numbers <- s %>%
str_extract_all("[0-9]+(?=hr?)") %>%
lapply(., function(x) {if (length(x)==0) {"6"} else {x} }) %>%
as.numeric(unlist(.))
将您的数据与附加上一个答案的评论中的示例一起使用......
s <- c("0cGy-GCSF6hr-f-m5", "100cGy-LPS12hr-m-m2", "300cGy-NOTRT24hr-f-m2", "0cGy-6h-m1", "0cGy-LPS6-m1")
...这是产生的输出:
> letters
[1] "GCSF" "LPS" "NOTRT" "NOTRT" "NOTRT"
> numbers
[1] 6 12 24 6 6