国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

Regular Expression 正則表達式-1 (C#)

2024-07-21 02:18:54
字體:
來源:轉載
供稿:網友
起因是因為一片帖子,問到了一個問題,帖子是這樣的:

originally posted by 人就是這樣
我想編一個程序,但學compsci是很久以前的事情了。想請教請教大家。

有兩個txt文件,一個叫source.txt(有很多數據), 一個叫target.txt(空白的)

我想把source.txt里的一些數據提取出來(稍微修改一下),然后寫到target.txt里面。

舉個例子:
sourse.txt里的數據:
2oi)[email protected]##( "data:001%abc">dsi-23)(*32##("data:dce%xy3"#(*eoij2308eld

想提取的數據就是橘黃色的。
data:001%abc

全部提取出來以后,我還想把%換成*, 然后每條數據后面加個逗號","

最后target.txt就應該這樣:

data:001*abc,
data:dce*xyz

請問應該怎么做啊?實在java忘光了。求教~~

如果幫我做的話付點酬勞也可以。
以前我也面臨過類似的問題,總是通過程序描述的辦法解決,現在問題又提起來了,于是靜下心來想一想。有了上學期330編譯原理的基礎,并且做過有限狀態自動機以后,已經非常明確這種文字處理的事情應該交給regular expression(正則表達式),只不過自己總因為正則表達式晦澀難懂,因此沒有好好的琢磨過。
于是我就打算借這個機會把regular expression好好的熟悉一下。結果發現程序原來如此好寫:
using system;
using system.io;
using system.text;
using system.text.regularexpressions;

namespace regexpression
{
/// <summary>
///
/// </summary>
public class datafilter
{
public static void main(string[] args)
{
if( args.length < 2 )
{
console.error.writeline("please enter 2 filenames(e.g. in.txt out.txt)");
return;
}
string result;
using( streamreader sr = new streamreader(args[0]) )
{
result = filter( sr.readtoend() );
}
using( streamwriter wr = new streamwriter(args[1]) )
{
wr.write(result);
}
}
private static string filter(string input)
{
stringbuilder result = new stringbuilder();
regex r = new regex("/"(?<data>//w+):(?<key>//w+)%(?<value>//w+)/"", regexoptions.compiled);
for( match m = r.match(input); m.success; m = m.nextmatch() )
{
result.append( m.result("${data}:${key}*${value},"+environment.newline) );
}
return result.tostring();
}
}
}

實現這個功能的關鍵代碼也就不超過10行就夠了,一個字,爽。
略加修正:
·using statement
·end of line (environment.newline)
·use stringbuilder to improve performence
這些要感謝cumcum給與指正。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 神农架林区| 曲阳县| 康保县| 岳阳市| 方正县| 包头市| 高平市| 中牟县| 兴文县| 哈巴河县| 松溪县| 界首市| 项城市| 锡林郭勒盟| 安泽县| 天长市| 体育| 天柱县| 罗田县| 思茅市| 郯城县| 崇左市| 闵行区| 纳雍县| 建平县| 方山县| 西城区| 武清区| 龙南县| 隆回县| 宝兴县| 遂宁市| 万全县| 广德县| 泗水县| 繁昌县| 文安县| 桐城市| 瓮安县| 武隆县| 普洱|