663
社区成员




test.txt内容如下:
工a aaaa
式aa aad
工aaa aaaa
工aaaa
工期aaad
黄花菜aaae
工艺aaan
工区aaaq
工匠aaar
式aad
工友aadc
工厂aadg
请教c#编写一个算法,将格式[汉字字母]转换成[字母空格汉字]格式,最后生成的格式如下:
a aaaa 工
aa aad 式
aaa aaaa 工
aaaa 工
aaad 工期
aaae 黄花菜
aaan 工艺
aaaq 工区
aaar 工匠
aad 式
aadc 工友
aadg 工厂
下面是一个可能的C#算法实现:
using System;
using System.IO;
using System.Text.RegularExpressions;
class Program {
static void Main() {
// 读取文件内容
string text = File.ReadAllText("test.txt");
// 定义正则表达式匹配模式
string pattern = @"(\p{Han}+\p{L}+)\b";
// 替换为指定格式的字符串
string result = Regex.Replace(text, pattern, "$2 $1\n");
// 输出结果
Console.WriteLine(result);
}
}
这个算法的思路是:
File.ReadAllText
方法读取文本文件内容,得到一个字符串。(\p{Han}+\p{L}+)\b
,其中\p{Han}
表示一个汉字,\p{L}
表示一个字母,+
表示一个或多个,\b
表示单词边界。这个模式匹配“汉字字母”格式的字符串。Regex.Replace
方法替换匹配到的字符串,替换模式是"$2 $1\n"
,其中$2
表示第二个捕获组,即字母部分,$1
表示第一个捕获组,即汉字部分,\n
表示换行符。这个替换将“汉字字母”格式的字符串转换为“字母空格汉字”格式,并在行末添加一个换行符。Console.WriteLine
方法输出结果。
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim s As String = "啊 mahu youniao "
Dim sba As New Text.StringBuilder
Dim sbw As New Text.StringBuilder
For Each c In s
'c#似乎是用(int)即可
If AscW(c) < 128 Then
sba.Append(c)
Else
sbw.Append(c)
End If
Next
Debug.Print(sba.ToString.Trim(" ") & " " & sbw.ToString)
End Sub
判定一个字符是不是汉字的方法也有很多,有兴趣可以自己搞一下。
.