110,538
社区成员
发帖
与我相关
我的任务
分享
private static List<string> classicalChinese(int len, string text)
{
//按每组长度为len,将其分割成一个数组
string patten = "[\\s\\S]{" + len + "}|[\\s\\S]{1," + len + "}";
Regex rex = new Regex(patten, RegexOptions.IgnoreCase);
//分割
List<string> groups = new List<string>(rex.Matches(text).Cast<Match>().Select(m => m.Value).ToArray());
//反转:ase ,st c,a te, is ,This
groups.Reverse();
List<string> result = new List<string>();
List<List<string>> results = new List<List<string>>(len);
for (int i = 0; i < len; i++)
{
results.Add(new List<string>());
}
//组合:["asa t","st ih","e tsi"," ce s"]
for (int i = 0; i < groups.Count; i++)
{
//这里,包括后面,有将常规的空格转换成了一个空白占位符。只是为了观看效果
char[] arr_Groups = groups[i].Replace(" ", " ").ToCharArray();
for (int j = 0; j < len; j++)
{
//加多了两个空白占位符以作间距
results[j].Add(arr_Groups.Length < j + 1 ? " " : " " + arr_Groups[j].ToString());
}
}
//只是为了更直观,将每组字符进行拼接
foreach (List<string> temp in results)
{
result.Add(string.Join("", temp.ToArray()));
}
return result;
}
调用:我是webApi中加的方法,所以加的是<br/>换行符,以便于直接观看
string text = "先帝创业未半而中道崩殂,今天下三分,益州疲弊,此诚危急存亡之秋也。然侍卫之臣不懈于内,忠志之士忘身于外者,盖追先帝之殊遇,欲报之于陛下也。诚宜开张圣听,以光先帝遗德,恢士之气,不宜妄自菲薄,引喻失义,以塞忠谏之路也。"
+ "宫中府中,俱为一体;陟罚臧否,不宜异同。若有作奸犯科及为忠善者,宜付有司论其刑赏,以昭陛下平明之理;不宜偏私,使内外异法也。"
+ "侍中、侍郎郭攸之、费祎、董允等,此皆良实,志虑忠纯,是以先帝简拔以遗陛下:愚以为宫中之事,事无大小,悉以咨之,然后施行,必能裨补阙漏,有所广益。"
+ "将军向宠,性行淑均,晓畅军事,试用于昔日,先帝称之曰“能”,是以众议举宠为督:愚以为营中之事,悉以咨之,必能使行阵和睦,优劣得所。"
+ "亲贤臣,远小人,此先汉所以兴隆也;亲小人,远贤臣,此后汉所以倾颓也。先帝在时,每与臣论此事,未尝不叹息痛恨于桓、灵也。侍中、尚书、长史、参军,此悉贞良死节之臣,愿陛下亲之、信之,则汉室之隆,可计日而待也。"
+ "臣本布衣,躬耕于南阳,苟全性命于乱世,不求闻达于诸侯。先帝不以臣卑鄙,猥自枉屈,三顾臣于草庐之中,咨臣以当世之事,由是感激,遂许先帝以驱驰。后值倾覆,受任于败军之际,奉命于危难之间:尔来二十有一年矣。"
+ "先帝知臣谨慎,故临崩寄臣以大事也。受命以来,夙夜忧叹,恐托付不效,以伤先帝之明;故五月渡泸,深入不毛。今南方已定,兵甲已足,当奖率三军,北定中原,庶竭驽钝,攘除奸凶,兴复汉室,还于旧都。此臣所以报先帝而忠陛下之职分也。至于斟酌损益,进尽忠言,则攸之、祎、允之任也。"
+ "愿陛下托臣以讨贼兴复之效,不效,则治臣之罪,以告先帝之灵。若无兴德之言,则责攸之、祎、允等之慢,以彰其咎;陛下亦宜自谋,以咨诹善道,察纳雅言,深追先帝遗诏。臣不胜受恩感激。"
+ "今当远离,临表涕零,不知所言。";
Stopwatch sw = new Stopwatch();
sw.Start();
List<string> list = classicalChinese(20, text);
sw.Stop();
return string.Format("耗时:{0}ms", sw.Elapsed.TotalMilliseconds) + "<br/>" + string.Join("<br/>", list.ToArray());
效果:真的有看文言文的感觉呀。哈哈
private static List<string> test(int len, string text)
{
//按每组长度为len,将其分割成一个数组
string patten = "[\\s\\S]{" + len + "}|[\\s\\S]{1," + len + "}";
Regex rex = new Regex(patten, RegexOptions.IgnoreCase);
//分割
List<string> groups = new List<string>(rex.Matches(text).Cast<Match>().Select(m => m.Value).ToArray());
//反转:ase ,st c,a te, is ,This
groups.Reverse();
List<string> result = new List<string>();
List<List<string>> results = new List<List<string>>(len);
for (int i = 0; i < len; i++)
{
results.Add(new List<string>());
}
//组合:["asa t","st ih","e tsi"," ce s"]
for (int i = 0; i < groups.Count; i++)
{
//这里,包括后面,有将常规的空格转换成了一个空白占位符。只是为了观看效果
char[] arr_Groups = groups[i].Replace(" ", " ").ToCharArray();
for (int j = 0; j < len; j++)
{
results[j].Add(arr_Groups.Length < j + 1 ? " " : arr_Groups[j].ToString());
}
}
//只是为了更直观,将每组字符进行拼接
foreach (List<string> temp in results)
{
result.Add(string.Join("", temp.ToArray()));
}
return result;
}
string text = "本片为英剧军情五处电影版,也是这一系列剧的大结局。当一个恐怖分子在一次常规交接中逃脱,克莱姆必须与军情五处遭贬低的情报长官合作,在即将到来的伦敦恐怖袭击之前追踪到恐怖分子。";
List<string> list = test(4, text);
return string.Join("<br/>", list.ToArray());
#include <iostream>
using namespace std;
int main()
{
string chars;
int row=0;//行
int col=0;//列
cin>>row;
cout<<"输入行数!"<<endl;
while(row>100)
{
cin>>row;
}
cout<<"输入列数!"<<endl;
cin>>col;
while(col>1000)
{
cin>>col;
}
cout<<"输入字符串!"<<endl;
cin>>chars;
int i=0;
string chartemp;
while(i<chars.length)
{
//
}
}