请教c#编写一个算法,将格式[汉字字母]转换成[字母空格汉字]格式

山东蓝鸟贵薪 2023-10-28 12:27:12

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 工厂

...全文
228 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
山东蓝鸟贵薪 2023-11-04
  • 打赏
  • 举报
回复

img

_Red_Bean_ 2023-10-28
  • 打赏
  • 举报
回复 1

下面是一个可能的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);
    }
}

这个算法的思路是:

  1. 使用File.ReadAllText方法读取文本文件内容,得到一个字符串。
  2. 定义正则表达式模式(\p{Han}+\p{L}+)\b,其中\p{Han}表示一个汉字,\p{L}表示一个字母,+表示一个或多个,\b表示单词边界。这个模式匹配“汉字字母”格式的字符串。
  3. 使用Regex.Replace方法替换匹配到的字符串,替换模式是"$2 $1\n",其中$2表示第二个捕获组,即字母部分,$1表示第一个捕获组,即汉字部分,\n表示换行符。这个替换将“汉字字母”格式的字符串转换为“字母空格汉字”格式,并在行末添加一个换行符。
  4. 使用Console.WriteLine方法输出结果。
  5. 完成。
山东蓝鸟贵薪 2023-10-31
  • 举报
回复
@_Red_Bean_ ************** 异常文本 ************** System.ArgumentException: 正在分析“(\p{Han}+\p{L}+)\b”- 未知的属性“Han”。 在 System.Text.RegularExpressions.RegexCharClass.SetFromProperty(String capname, Boolean invert, String pattern) 在 System.Text.RegularExpressions.RegexCharClass.AddCategoryFromName(String categoryName, Boolean invert, Boolean caseInsensitive, String pattern) 在 System.Text.RegularExpressions.RegexParser.ScanBackslash() 在 System.Text.RegularExpressions.RegexParser.ScanRegex() 在 System.Text.RegularExpressions.RegexParser.Parse(String re, RegexOptions op) 在 System.Text.RegularExpressions.Regex..ctor(String pattern, RegexOptions options, TimeSpan matchTimeout, Boolean useCache) 还请赐教一二,出现错误不能运行的
清晨曦月 2023-10-28
  • 打赏
  • 举报
回复

    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

判定一个字符是不是汉字的方法也有很多,有兴趣可以自己搞一下。

纯爱战士zzy 2023-10-28
  • 打赏
  • 举报
回复

.

663

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder Web 应用
社区管理员
  • Web 应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧