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

首頁 > 學院 > 開發設計 > 正文

x01.TextProc: 兩三分鐘完成的一個小工具

2019-11-17 02:13:38
字體:
來源:轉載
供稿:網友

x01.TextPRoc: 兩三分鐘完成的一個小工具

在工作中,遇到這么個問題,需要將 Excel 表中類似 2134-1234-4456 的商品編號輸入到單位的程序中,而程序只認213412344456 這種沒有 ‘-’ 的輸入。數量比較多,一筆一筆的敲,費時費力不可取,所以轉換一下,復制粘貼,不僅可以提高速度,而且也不易出錯。并且,由于 Excel 表是別人提供,可能反復遇到此問題,所以寫個轉換的小工具是必要的。

直接操作 Excel 嗎?問題 ”矮小下“,顯然用不著這么麻煩。我的方法是,將商品編號列復制粘貼到記事本中保存為 temp.txt 文件。現在問題一下子就簡化為普通的文本處理了。新建一個 WPF 程序,其 MainWindow.xaml 和 MainWindow.xaml.cs 內容如下:

<?xml version="1.0" encoding="utf-8"?><Window    x:Class="TextProc.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"    Title="Text Proc"    Height="380"    Width="500"    WindowStartupLocation="CenterScreen">    <StackPanel>        <ScrollViewer            Height="300"            VerticalScrollBarVisibility="Auto">            <TextBox                Name="txtContent"                Margin="5" />        </ScrollViewer>        <StackPanel            Orientation="Horizontal"            HorizontalAlignment="Right">            <Button                Name="btnSelect"                Content="_Select" />            <Button                Name="btnProcess"                Content="_Process" />        </StackPanel>    </StackPanel></Window>
MainWindow.xaml
/** * MainWindow.xaml.cs (c) 2015 by x01 * ---------------------------------- */using System;using System.Collections.Generic;using System.IO;using System.Text;using System.Text.RegularExpressions;using System.Windows;using System.Windows.Controls;using System.Windows.Data;using System.Windows.Documents;using System.Windows.Input;using System.Windows.Media;using Microsoft.Win32;namespace TextProc{    /// <summary>    /// Interaction logic for Window1.xaml    /// </summary>    public partial class MainWindow : Window    {        string _path = null;        OpenFileDialog _dlg = new OpenFileDialog();                public MainWindow()        {            InitializeComponent();                        _dlg.Filter = "*.txt|*.txt|*.*|*.*";                        btnProcess.Click += delegate {                 if (string.IsNullOrEmpty(_path)) return;                var text = File.ReadAllText(_path);                text = ProcessText(text);                txtContent.Text = text;                File.WriteAllText(_path + ".proc", text);                MessageBox.Show("Process Text Success!");            };                        btnSelect.Click += delegate {                 _dlg.ShowDialog();                _path = _dlg.FileName;                txtContent.Text = File.ReadAllText(_path);            };        }                // 主要的文本處理邏輯,換行作分割,只保留數字,可根據實際情況調整。        private string ProcessText(string text)        {            string [] arr = text.Split('/n');            List<string> result = new List<string>();            foreach (var a in arr) {                char[] cs = a.ToCharArray();                string s = string.Empty;                for (int i = 0; i < cs.Length; i++) {                    if (cs[i] < '0' || cs[i] > '9') continue;                    s += cs[i].ToString();                }                result.Add(s);            }                        string str = string.Empty;            foreach (var r in result) {                str += r + "/n";            }            return str;        }    }}
MainWindow.cs

由于是在 XP 系統用 SharpDev 編寫,所以 xaml 文件稍有不同。

處理后,再復制回 Excel 表中。花個兩三分鐘就解決了問題,還是不錯的。

在 windows10 和 vs2015 這兩個巨無霸來臨之際,作為編程愛好者,不要忘了,編程是為了解決問題這一本質,是為記。

我也是醉了,Ctl + H 即可解決,竟然寫了個程序!之所以如此,是因為我幾乎從來不用 Ctl+H 來全部替換:一不小心改了不該改的數據,在單位可不是小問題。

解決問題的方法從來都不是一種,還是予以保留吧,因為我的出發點是解決 Excel 問題,并不一定要操作 Excel。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 肇州县| 青州市| 乌拉特前旗| 安新县| 奉化市| 措美县| 桐梓县| 南靖县| 怀柔区| 武鸣县| 弋阳县| 东兴市| 兴安盟| 漳浦县| 望都县| 读书| 翁牛特旗| 双鸭山市| 江门市| 获嘉县| 凤凰县| 巴南区| 雷州市| 丹东市| 栾城县| 富源县| 襄垣县| 民乐县| 临颍县| 当雄县| 龙口市| 宁蒗| 阜宁县| 宿州市| 无棣县| 沈丘县| 农安县| 循化| 桓台县| 土默特右旗| 应用必备|