[英]How do I get rid of double spaces without regex or any external methods?
這是我們大學課程給我們的額外練習,我們需要找出一個句子是否包含回文。 雖然判斷一個詞是否為回文相當容易,但可能存在給定句子如下所示的情況:“Dog cat - kajak house”。 我的邏輯是,使用我已經寫過的函數,首先確定一個字符是否是一個字母,如果不是就刪除它。 然后計算空格數 + 1 以找出句子中有多少個單詞,准備這些單詞的數組,然后投射 function 檢查數組的每個元素上的單詞是否為回文。 然而,雙倍空間會在“計數”階段搞砸一切。 我花了大約一個小時來擺弄代碼來執行此操作,但是我無法解決這個問題。 誰能幫幫我? 請注意,我不應該使用任何外部方法或庫。 我已經使用 RegEx 完成了這項工作並且相當容易,但是我想“合法”地執行此操作。 提前致謝!
只是在空間上分裂,訣竅是去除空的。 谷歌StringSplitOptions.RemoveEmptyEntries
然后顯然加入一個干凈的空間
您可以將您感興趣的所有字符復制到一個新字符串中:
var copy = new StringBuilder();
// Indicates whether the previous character was whitespace
var whitespace = true;
foreach (var character in originalString)
{
if (char.IsLetter(character))
{
copy.Append(character);
whitespace = false;
}
else if (char.IsWhiteSpace(character) && !whitespace)
{
copy.Append(character);
whitespace = true;
}
else
{
// Ignore other characters
}
}
如果您正在尋找最基本的/olde-worlde 選項,這將起作用。 但是除了說明性的方式之外,沒有人會真正這樣做。
string test = "Dog cat kajak house"; // Your string minus any non-letters
int prevLen;
do
{
prevLen = test.Length;
test = test.Replace(" ", " "); // Repeat-replace double spaces until none left
} while (prevLen > test.Length);
就個人而言,我可能會執行以下操作以得到一組要檢查的單詞:
string[] words = test.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.