問題
給定一個樣本字串abcdef,我試圖將其分割成一個由兩個字串元素組成的陣列,其結果應該是['ab','cd','ef'];
我所嘗試的
我試著遍歷字串,同時將子串存盤在我在方法中宣告的陣列中的當前索引中,但是得到的輸出是這樣的
['ab', 'bc', 'cd', 'de', 'ef']
我使用的代碼
static string[] mymethod(string str)
{
string[] r= new string[str.Length] 。
for(int i=0; i< str.Length-1; i )
{
r[i]=str.Substring(i,2)。
}
return r;
}
非常歡迎任何解決方法來糾正這個問題,用代碼回傳正確的輸出,謝謝
。uj5u.com熱心網友回復:
如果你使用最新版本的.NET,即(.NET 6.0 RC 1),那么你可以嘗試Chunk()方法,
var strChunks = "abcdef"/span>. Chunk(2); //[['a', 'b'], ['c', 'd'], ['e', 'f]]。
var result = strChunks.Select(x => string.Join(''/span>, x)).ToArray(); //["ab", "cd", "ef"]
注意:由于最新版本的.NET,我無法在fiddle或我的本地機器上進行測驗
uj5u.com熱心網友回復:
.net 6有一個IEnumerable.Chunk()方法,你可以用它來做這個,如下所示:
public static void Main()
{
string[] result =
"abcdef".
.Chunk(2)
.Select(chunk => new string(chunk)).ToArray() 。
Console.WriteLine(string.Join(", ", result)); // Prints "ab, cd, ef"
}
在.net 6之前,你可以使用MoreLinq.Batch()來做同樣的事情。
uj5u.com熱心網友回復:
你的問題是,你每次都把你的索引增加1而不是2
var res = new List<string>()。
for (int i = 0; i < x.Length - 1; i =2)
{
res.Add(x.Substring(i, 2))。
}
應該能行
編輯。 因為你要求一個默認的_后綴,以應對奇數字符的數量。
這應該是一個變化:
var testString = "odd"。
string workOn = testString.Length % 2 != 0 ?
? testString "_" ?
: testString。
var res = new List<string>()。
for (int i = 0; i < workOn.Length - 1; i =2)
{
res.Add(workOn.Substring(i, 2))。
}
兩個需要注意的問題:
Chunk()是可用的,所以你可以按照其他答案的建議使用它uj5u.com熱心網友回復:
使用linq,你可以通過以下方式來實作:
char[] word = "abcdefg"/span>.ToCharArray()。
var evenCharacters = word.Where((_, idx) => idx % 2 == 0) 。
var oddCharacters = word.Where((_, idx) => idx % 2 == 1) 。
var twoCharacterLongSplits = evenCharacters
.Zip(oddCharacters)
.Select((pair) => new char[] { pair.First, pair.Second })。
訣竅如下,我們創建兩個集合:
% 2 == 0)的字符% 2 == 1)然后我們對它們進行壓縮。因此,我們通過從偶數和奇數集合中抽取一個專案來創建一個元組。然后我們從偶數和......中抽取一個專案來創建一個新的元組。
最后,我們將元組轉換為陣列,以獲得理想的輸出格式。
uj5u.com熱心網友回復:
你的方向是正確的,但是你需要以2而不是以1來遞增。你還需要在取第二個字符之前檢查陣列是否已經結束,否則你有可能遇到索引越界的例外。試試我下面寫的這段代碼。我已經試過了,它很有效。最好!
public static List< string> splitstring(string)
{
List<string> result = new List<string>()。
int strlen = str.Length。
for(int i = 0; i<strlen; i = 2)
{
string currentstr = str[i].ToString();
if (i 1 <= strlen1)
{ currentstr = str[i 1].ToString(); }
result.Add(currentstr);
}
return result。
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/333669.html
標籤:
上一篇:洗掉小于陣列左側元素的元素
下一篇:洗掉URL中的尾部斜線
