根據指定字符集拆分任意字串

2021-07-13 16:30:08 字數 2494 閱讀 9259

題目真不知道怎麼寫。。我經常自己做一些小工具,所以並沒啥系統的東西可寫,這也並不是我想寫系統的東西,而且看別人寫的高大上的東西我也一點都不羨慕,真的

具體是這樣,有乙個列表,裡面存放的是一些不重複的字元,假定這些字元就是我需要找出的,或者說在我這個工具中,我需要在乙個任意字串中分別找出字元列表中有的和沒有的,並拆分成小的字串。說著這麼多,我成功把自己說糊塗了。

舉個栗子更好說明我的意圖:

//指定的字符集

char data = new char

;

然後有個任意字串:

string input = "eadshafajhkjacccacaesdmf";
我要做的就是將其拆分為:

ea

dshafa

jhkj

acccacae

sdmf

oh, this is so boring. 

同事對我的評價基本都是「喜歡把簡單的事情複雜化」。

接下來就開始介紹我是如何把簡單的事情複雜化的。

(tips:以下**片段均以減慢執行速度、占用更多記憶體、降低程式效能為目的進行編寫的

首先獲取指定列表中不存在的字元在給定字串中的位置

/// /// 獲取指定列表中不存在的字元在給定字串中的位置

///

/// 給定的字串

/// 指定的列表

public listgetfailedlocations(string input, char source)

listfailedlocs = new list();

tryelse

}index++;}}

catch

return failedlocs;

}

新建乙個類用來存放分類之後的字串資訊:

public class sentence

//在原始字串中的次序

public string data //分割出的字串資訊

public bool failed //是否在指定字符集中存在

public override string tostring()

}

這裡要說明的是,如果在給定的字串中,有連續多個字元在指定的字符集中存在,那就把它們連線成乙個字串而不是單個字元。

然後,如果全部都存在,即之前得到的存放不存在字元序號的列表數量為0,那麼就原樣放進類中

sentence sentence = new sentence()

;

否則進行如下處理:

獲取在給定字串中不存在的【連續】字元的起始位置及長度:

//startindex, length

dictionaryloctemp = new dictionary();

int index = -1;

int lastloc = -1;

foreach (var loc in failedlocs)

else

index++;

}

上面這些**有點繞,如果同事們看了一定又要說:我靠!這麼複雜!你就不能寫簡單點嗎?

那我解釋下,如果出現兩個及以上連續字元,那麼後乙個的次序一定是前乙個的次序+1,如果這個【聯絡】斷掉之後,就證明連續的部分已經結束,需要重新開始判斷是否連續了。 lastloc 用來記錄【可能】連續的字串的首位次序,然後放進乙個字典中,如果後乙個次序剛好是前乙個次序+1,那麼對應的【重複次數】就要增加1

(肯定有十分簡單的方法,但我只能想到這種)

好了,現在已經得到不存在的字元在給定字串中的起始位置和長度,接下來進行歸類。

思路是,對上一步得到的位置長度列表每迴圈一次,就把鍵之前的字串取出來放到一邊,把鍵和它對應長度的字串取出來放到另一邊。

這樣迴圈結束後,如果還剩下字串沒處理,那這段字串一定就是由指定字符集中沒有出現過的字元組成的。

這樣就全部劃分完了。

具體實現:

index = 0;

lastloc = 0;

foreach (var key in loctemp.keys)

);index++;

}result.add(new sentence()

);lastloc = key + loctemp[key];

index++;

}if (lastloc < input.length));}

這樣整個就做完了。

當然這樣的需求我估計應該沒人會碰到,而且在我寫的工具裡都封裝過了,就不貼出完整**了。

測試結果(不要在意細節)(不要在意內容)(不要在意指定的字符集)(啥都不要在意):

用指定的字元或者字符集拆分指定字串

今日在逛園子的時候,看了嚇博問,似乎我都很少參加博問裡的問題,真是慚愧,可能是沒怎麼注意,還有就是那個博問,最好還是弄在比較顯眼的地方,呵呵。一直被我給忽略了,罪過罪過。有一問題,就是拆分字串的問題,估計對於牛人們來說,太簡單了,也太不是話題了,算得上老掉牙的問題吧,管它的,我也就獻醜獻醜,各位如果...

字串拆分,根據指定分隔符拆分字串

有時需要根據指定內容,完成對字串的拆分,針對這個需求,將字串函式進行整合,完成了拆分字串的功能 比如 我們有一組資料 splitxxlinexxtoxxarray 中間有固定分隔字串xx,執行下面子函式,就能獲得字串資料 split line to array。注意 拆分完成的字串陣列是由此函式完成...

根據標點拆分字串 Excel 字串拆分

用 excel 處理資料時,有時需要對字串進行拆分。對於比較簡單的拆分,使用 excel 函式可以順利完成,但碰到一些特殊需求,或者拆分的規則比較複雜時,則很難用 excel 實現了。這裡列出一些拆分需求示例,分析拆分難點,並提供 spl 解決 spl 是專業計算引擎 esproc 使用的語言,用於...