编辑一个包含685个字符的字符串,并用C#中的另一个字符串替换substring

时间:2015-01-19 17:52:01

标签: c# replace substring

使用文件夹对话框浏览包含特定文件的文件夹...

private void btnBrowse_Click(object sender, EventArgs e)
    {
        DialogResult result = fbdPath.ShowDialog();
        if (result == DialogResult.OK)
        {
            string[] files = Directory.GetFiles(fbdPath.SelectedPath);
            txtPath.Text = fbdPath.SelectedPath;
            MessageBox.Show(txtPath.Text.ToString());
        }
    }

更新文件......

try
        {
            String path = txtPath.Text;
            DirectoryInfo dir = new DirectoryInfo(path);
            FileInfo[] files = dir.GetFiles();
            foreach( FileInfo file in files)
            {
                StreamReader sReader;
                sReader = File.OpenText(dir + @"\" + file.Name );

                StreamWriter sWriter = new StreamWriter(@"f:\" + file.Name);
                while (sReader.EndOfStream == false)
                {
                    string contents = sReader.ReadLine();

                    String Flag = contents.Substring(655, 29);

                    String emBossFName = contents.Substring(41, 40);
                    String emBossLName = contents.Substring(121, 40);

                    String emBossFullName = emBossFName.Trim() + " " + emBossLName.Trim();

                    String newString = emBossFullName;

                    sWriter.WriteLine(contents.Replace(Flag, newString));
                }
                sWriter.Close();
                sReader.Close();
            }
        }
        catch (IOException ex)
        {
            MessageBox.Show(ex.Message.ToString());
        }
    }

我需要替换一个29个字符的字符串的第655个位置(由空格分隔的人的名字和姓氏的组合),但问题是如何保持字符串的固定长度,这是长度为685个字符?

3 个答案:

答案 0 :(得分:0)

只需拿出最后一个字符串,然后拨打Remove

"...".Remove(684);

而且,如果你担心它不够长,你可以先使用PadRight

答案 1 :(得分:0)

我认为你应该让newString完全长29个字符:

if (newString.Length > 29) newString = newString.Substring(0, 29);
if (newString.Length < 29) newString = newString.PadRight(29);

如果字符串短于29个字符,则此代码修剪字符串,如果字符串短于29个字符,则使用空格键入右边的字符串。

答案 2 :(得分:-1)

您可以使用StringBuilder类。

Ex:将defg替换为1234

StringBuilder sb = new StringBuilder( "abcdefghi");
var newstr = sb.Remove(3, 4).Insert(3, "1234").ToString();