0
If Left(strText, 3) = "De " Then
    Mid(strText, 1, 1) = "d"
ElseIf Left(strText, 4) = "Van " Then
    Mid(strText, 1, 1) = "v"
End If

This above VB code needs to be translated into C#.

I know mid and left are

strText.Substring(1,1) and strText.Substring(0, 4)

but if I can't do

strText.Substring(1,1) = "v";

Do I need to do..

strText.Replace(strText.Substring(1,1), "v"))

instead?

There was no comment in the VB6 code. So I am only guessing what is going on here.

EDIT: Sorry Wrong version of code

4

2 回答 2

2

第一个代码块测试字符串是否以字符开头Van,如果是,它将第一个字符替换为v

所以最简单的替换是:

if(strText.StartsWith("De ")) {
   strText = "d" + strText.Substring(1);
}else if(strText.StartsWith("Van ")) {
   strText = "v" + strText.Substring(1);
}
于 2013-07-04T06:46:20.613 回答
1
strText = "v" + strText.Substring(1)

请注意,数组索引从 0 开始。我假设您尝试将“v”放在字符串中的第一个字符位置(即 0)。

编辑:请注意,与可以在指定字符位置使用Mid或设置值的VB6 示例相比,.net 中的字符串是不可变的(即不能就地修改字符串的内容) 。Left

以下将返回一个带有修改内容的新字符串,应该将其分配给strText您以覆盖原始内容。

strText.Replace(strText.Substring(1,1), "v"))

此外,这不是一个好方法,因为有两件事 1)如果 strText 是“van”,`strText.Substring(1,1) 将返回“a”

2)strText.Replace(strText.Substring(1,1), "v"))将替换所有“a”,而不仅仅是第一个。

于 2013-07-04T06:45:53.113 回答