簡體   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