0

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

string note = "TextEntry_Slide_7|记事本一我要到处输入文字:)|250887|0^TextEntry_Slide_10|记事本二:wrilun3q 4p9834m ggddi :(|996052|2^TextEntry_Slide_14||774159|4^TextEntry_Slide_16| tnoinrgb rt trn n|805585|5"

我想删除^字符以及字符后面的 9 个^字符。所以字符串看起来像:

string note = "TextEntry_Slide_7|记事本一我要在所有地方输入文本:)TextEntry_Slide_10|记事本二:wrilun3q 4p9834m ggddi :(TextEntry_Slide_14|TextEntry_Slide_16|tnoinrgb rt trn n|805585|5"

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

string note = "TextEntry_Slide_7|记事本一我要在各处输入文本:)TextEntry_Slide_10|记事本二:wrilun3q 4p9834m ggddi :(TextEntry_Slide_14|TextEntry_Slide_16|tnoinrgb rt trn n"

我已经删除了最初在字符串音符中的大量其他内容,但我对如何执行上述操作感到困惑。

我找到了^字符的索引,note.IndexOf("^")但我不确定下一步要做什么来删除它之前的 9 个字符。

任何帮助将不胜感激 :)

4

5 回答 5

3

一种简单的方法是Regex.Replace(note, ".{9,9}\\^", "");

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

于 2012-12-12T16:28:17.743 回答
1

当然,您只需要:

string output = Regex.Replace(note, @".{9}\^", string.Empty);
// remove last 9
output = output.Remove(output.Length - 9);
于 2012-12-12T16:33:33.607 回答
1

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

 var stepOne = Regex.Replace(input, @".{9}\^", String.Empty);

然后我们就扔掉最后九个字符。

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

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

于 2012-12-12T16:34:54.250 回答
0

如果您正在使用.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("^");
}

这将找到^字符串中的第一个字符并删除它之前的前 9 个字符(包括^)。然后,它将^在字符串中找到下一个并重复,直到没有剩余。

然后从字符串中删除最后 9 个字符,你再做一个.Substring()

note = note.Substring(0, (note.Length - 9));
于 2012-12-12T16:31:48.663 回答
0

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

接下来,如果您想在 vb.net 中剥离字符串,您可以使用 mid() 函数和 len() 函数轻松完成此操作,len 与 instr 一起告诉长度,您可以从字符串中计算出您想要的内容。

如果您喜欢在 C# 中执行此操作,请查看以下网址:http ://www.dotnetcurry.com/ShowArticle.aspx?ID=189

于 2012-12-12T16:32:38.290 回答