題目真不知道怎麼寫。。我經常自己做一些小工具,所以並沒啥系統的東西可寫,這也並不是我想寫系統的東西,而且看別人寫的高大上的東西我也一點都不羨慕,真的
具體是這樣,有乙個列表,裡面存放的是一些不重複的字元,假定這些字元就是我需要找出的,或者說在我這個工具中,我需要在乙個任意字串中分別找出字元列表中有的和沒有的,並拆分成小的字串。說著這麼多,我成功把自己說糊塗了。
舉個栗子更好說明我的意圖:
//指定的字符集
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 使用的語言,用於...