我需要替换文件夹中的多个文件名。这是其中一个文件:
Abc.CDE.EFG
我需要在点之前替换字符串的第一部分(" ABC")并将其替换为:" zef"。
有什么想法吗?我找到了这个,但它取出了点,不知道如何添加" zef"。
var input = _FileInfo.ToString();
var output = input.Substring(input.IndexOf(".").Trim())
答案 0 :(得分:3)
由于问题用正则表达式标记,您可以使用正则表达式,如下所示:
var input = "abc.def.efg";
var pattern = "^[^\\.]+";
var replacement = "zef";
var rgx = new Regex(pattern);
var output = rgx.Replace(input, replacement);
来源:https://msdn.microsoft.com/en-us/library/xwewhkd1(v=vs.110).aspx
答案 1 :(得分:2)
你快到了,试试:
string myString = "Abc.CDE.EFG";
//This splits your string into an array with 3 items
//"Abc", "CDE" and "EFG"
var stringArray = myString.Split('.');
//Now modify the first item by changing it to "zef"
stringArray[0] = "zef";
//Then we rebuild the string by joining the array together
//delimiting each group by a period
string newString = string.Join(".", stringArray);
使用此解决方案,您可以独立访问任何"块"只需通过索引引用数组。
小提琴here
答案 2 :(得分:0)
试试这个:
var input = _FileInfo.ToString();
var output = "zef" + input.Substring(input.IndexOf("."));
答案 3 :(得分:0)
如果你知道第一个字符串的长度,你可以替换从位置开始提到的字符数,直到你想要替换的长度。
import org.apache.spark.ml.linalg.Vector // and not org.apache.spark.mllib.linalg.Vector!
import org.apache.spark.mllib.linalg.Vectors // and not org.apache.spark.ml.linalg.Vectors!
val EntireDataRdd = new_set.select("label","features").map {
case Row(label: Int, features: Vector) => LabeledPoint(label.toDouble, Vectors.dense(features.toArray))
}