繁体   English   中英

如何从字符串中删除字符?

[英]How to remove character from string?

我有一个从userInput获取的字符串。 我现在想做的是从此字符串中删除唯一字符,但只删除一次。 主要问题是此唯一字符没有唯一索引。 例如:用户输入了一个字符串:“ 0123456”,现在我要删除第一个'1',因此该字符串将输出为“ 023456”。 但是,如果用户输入的字符串类似“ 01123456”,如何删除第一个“ 1”并使它看起来像“ 0123456”? 我正在寻找一种可用于两种情况的方法。 我正在使用string.TrimStart(),但没有得到我想要的东西。 我怎样才能做到这一点?

您可以使用RemoveIndexOf

var str = "01123456";
var i = str.IndexOf('1'); // IndexOf returns -1 when there is no element found, so we need to handle that when calling remove.
var res = (i >= 0) ? str.Remove(i, 1) : str;
Console.WriteLine(res); // 0123456

我认为您需要的是string.Remove方法。 请参阅此处的MSDN文档: https : //docs.microsoft.com/zh-cn/dotnet/api/system.string.remove?view= netframework-4.7.2# System_String_Remove_System_Int32_System_Int32_

如果您不知道字符在哪里,请首先调用string.IndexOf来查找它。 如果此呼叫返回非负数,请致电“ Remove将其删除。 请注意,字符串是不可变的,因此它将始终创建一个新对象。

yourstring = yourstring.IndexOf('1') != -1 ? yourstring.Remove(yourstring.IndexOf('1'), 1) : yourstring;

另一种方法是结合使用ContainsRemoveIndexOf

if (userInput.Contains('1')) userInput = userInput.Remove(userInput.IndexOf('1'), 1);

或者,如果您想成为Linq-y ...

userInput = string.Concat(userInput.TakeWhile(chr => chr != '1')
    .Concat(userInput.SkipWhile(chr => chr != '1').Skip(1)));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM