用另一个替换字符串的第一部分

时间:2017-07-07 19:34:00

标签: c# regex

我需要替换文件夹中的多个文件名。这是其中一个文件:

Abc.CDE.EFG

我需要在点之前替换字符串的第一部分(" ABC")并将其替换为:" zef"。

有什么想法吗?我找到了这个,但它取出了点,不知道如何添加" zef"。

var input = _FileInfo.ToString(); 
var output = input.Substring(input.IndexOf(".").Trim())

4 个答案:

答案 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))
}