C# 在字符串中找到索引之前删除一定数量的字符

C# 在字符串中找到索引之前删除一定数量的字符,c#,string,replace,substring,indexof,C#,String,Replace,Substring,Indexof,我有一个字符串,需要从中删除某些字符 string note=“TextEntry_Slide_7 |记事本一我要在所有地方输入文字:)| 250887 | 0 | TextEntry_Slide_10 |记事本二:wrilun3q 4p9834m ggddi:(| 996052 | TextEntry_Slide| 14 | 774159 | 4 | TextEntry| u Slide 16 | tnorgb rt trn n | 805585 | 5 |” 我想删除^字符,以及^字符后面的

我有一个字符串,需要从中删除某些字符

string note=“TextEntry_Slide_7 |记事本一我要在所有地方输入文字:)| 250887 | 0 | TextEntry_Slide_10 |记事本二:wrilun3q 4p9834m ggddi:(| 996052 | TextEntry_Slide| 14 | 774159 | 4 | TextEntry| u Slide 16 | tnorgb rt trn n | 805585 | 5 |”

我想删除
^
字符,以及
^
字符后面的9个字符。因此字符串如下所示:

string note=“TextEntry_Slide_7 |记事本1我要在所有地方输入文字:)TextEntry_Slide_10 |记事本2:wrilun3q 4p9834m ggddi:(TextEntry_Slide_14 | TextEntry_Slide_16 | tnoinrgb rt trn | 805585 | 5”

在此之后,我还需要删除字符串末尾的最后9个字符:

string note=“TextEntry_Slide_7 |记事本1我要在所有地方输入文字:)TextEntry_Slide_10 |记事本2:wrilun3q 4p9834m ggddi:(TextEntry_Slide_14 | TextEntry_Slide_16 | tnoinrgb rt trn”

我已经删除了很多原本在弦乐中的东西,但是我很难理解如何做上面的事情

我发现
^
字符的索引类似于
note.IndexOf(“^”)
,但我不确定下一步如何删除它前面的9个字符


任何帮助都将不胜感激:)

一个简单的方法是
Regex.Replace(注意,“{9,9}\\\ ^,”)


删除最后9个字符的明显方法是
note.Substring(0,note.length-9)

一种简单的方法是
Regex.Replace(注意,“{9,9}\\\\ ^,”)


删除最后9个字符的明显方法是
note.Substring(0,note.length-9)

如果使用的是
.IndexOf(“^”)
,则可以将该结果/位置存储到一个临时变量中,然后使用一些
.Substring()
调用来重新生成字符串

尝试以下方法:

int carotPos = note.IndexOf("^");
while (carotPos > -1) {
    if (carotPos <= 9) {
        note = note.Substring(carotPos);
    } else {
        note = note.Substring(0, (carotPos - 9)) + note.Substring(carotPos);
    }
    carotPos = note.IndexOf("^");
}

如果使用的是
.IndexOf(“^”)
,则可以将该结果/位置存储到一个临时变量中,然后使用一些
.Substring()
调用来重新生成字符串

尝试以下方法:

int carotPos = note.IndexOf("^");
while (carotPos > -1) {
    if (carotPos <= 9) {
        note = note.Substring(carotPos);
    } else {
        note = note.Substring(0, (carotPos - 9)) + note.Substring(carotPos);
    }
    carotPos = note.IndexOf("^");
}

我不确定您的语言是什么,但在vb.net中,我为此经常使用instr()函数。instr告诉您在什么位置找到另一个字符串中的第一个匹配字符串,如果没有找到字符串,则返回0或负值

接下来,如果您想在vb.net中剥离字符串,您可以使用mid()函数和len()函数轻松地进行剥离,len与instr一起告诉您长度,您可以从字符串中计算所需内容


如果你想在C中这样做,请查看以下url:

我不确定你的语言是什么,但在vb.net中,我为此使用了很多instr()函数。instr告诉您在什么位置找到另一个字符串中的第一个匹配字符串,如果没有找到字符串,则返回0或负值

接下来,如果您想在vb.net中剥离字符串,您可以使用mid()函数和len()函数轻松地进行剥离,len与instr一起告诉您长度,您可以从字符串中计算所需内容

如果您想在C中执行此操作,请查看此url:

当然,您只需要:

string output = Regex.Replace(note, @".{9}\^", string.Empty);
// remove last 9
output = output.Remove(output.Length - 9);
当然,您只需要:

string output = Regex.Replace(note, @".{9}\^", string.Empty);
// remove last 9
output = output.Remove(output.Length - 9);

首先,我们使用正则表达式去除插入符号和前面的九个字符

 var stepOne = Regex.Replace(input, @".{9}\^", String.Empty);
然后我们就扔掉最后九个字符

 var stepTwo = stepOne.Remove(stepOne.Length - 9);

您可能应该添加一些错误处理—例如,如果在第一步之后字符串短于9个字符。

首先,我们使用正则表达式除去插入符号和前面的9个字符

 var stepOne = Regex.Replace(input, @".{9}\^", String.Empty);
然后我们就扔掉最后九个字符

 var stepTwo = stepOne.Remove(stepOne.Length - 9);

您可能需要添加一些错误处理,例如,如果字符串在步骤1之后短于九个字符。请考虑重新格式化您的问题,试图重新格式化是可怕的,但是您的示例字符串太长,无法在不引入额外字符的情况下留下它的清晰可读性。如果可以的话,请尝试将您的示例简化到解释您的请求所需的最低限度。另请注意可用的格式帮助。@jamesblackjblackburn:您可以在开始时使用四个空格来获取代码格式,这应该会有所帮助。还要注意,您最大的问题是示例的长度。一个3行的字符串很难阅读。尽我最大努力让它更可读:)欢呼巴厘,希望每个人都能阅读它现在:请考虑重新格式化你的问题,可怕的是重新尝试重新格式化,但你的例子字符串太长,使它难以阅读,而不引入额外的字符。如果可以的话,请尝试将您的示例简化到解释您的请求所需的最低限度。另请注意可用的格式帮助。@jamesblackjblackburn:您可以在开始时使用四个空格来获取代码格式,这应该会有所帮助。还要注意,您最大的问题是示例的长度。占用3行的字符串很难读取。我尽了最大努力使它更具可读性:)干杯,希望每个人现在都能阅读它:字符串开头的p

@
允许您使用单个“\\”。使用@虽然并不总是可取的,因为它禁用了所有转义序列。在这里,这不是什么大问题,但一般来说,您希望将其保存为不需要任何转义序列(例如文件路径)的格式。在正则表达式定义中使用它通常不是一个好主意,因为它在更一般的情况下会失败。字符串开头的
@
允许您使用单个`\`。使用@though并不总是可取的,因为它禁用了所有转义序列。在这里,这不是什么大问题,但一般来说,您希望将其保存为不需要任何转义序列(例如文件路径)的格式。在正则表达式定义中使用它通常不是一个好主意,因为它在更一般的c语言中会失败