将输入的字符串分2个字符添加空格并大写格式化

/// <summary>
/// 格式化输入文本框(只允许输入字母且每隔两个字符添加空格空位)
/// </summary>
public class FormatTextBox : RadTextBox
{
#region define、attribute

/// <summary>
/// 是否为退格键
/// </summary>
private bool IsEmptyKey = false;

/// <summary>
/// 枚举类型,False表示不转换,True表示转换为大写
/// </summary>
public enum ToUppers
{
False,
True,
}
private ToUppers to_Upper;
[DefaultValue(ToUppers.False)]
public ToUppers To_Upper
{
get
{
return to_Upper;
}
set
{
to_Upper = value;
}
}

#endregion

#region verride event

protected override void OnKeyPress(System.Windows.Forms.KeyPressEventArgs e)
{
base.OnKeyPress(e);

SetStandard(e);
}

/// <summary>
/// 只允许输入字母和退格键
/// </summary>
/// <param name="e">键盘按键</param>
private void SetStandard(System.Windows.Forms.KeyPressEventArgs e)
{
//只允许输入字母
Regex regex = new Regex("^[a-zA-Z\b]");
MatchCollection mc = regex.Matches(e.KeyChar.ToString());
foreach (Match ma in mc)
{
e.Handled = false;
if (e.KeyChar == ‘\b‘)
{
IsEmptyKey = true;
}
return;
}

e.Handled = true;
}

protected override void OnTextChanged(EventArgs e)
{
base.OnTextChanged(e);

if (ToUppers.True.ToString() == To_Upper.ToString())
{
this.Text = this.Text.ToUpper();
this.Select(Text.Length, 0);
}
}

public override string Text
{
get
{
return base.Text;
}
set
{
//退格键
if (IsEmptyKey)
{
base.Text = value;
IsEmptyKey = false;
return;
}
if (value.Length < 2)
{
base.Text = value;
return;
}

StringBuilder sb = new StringBuilder();
string content = value.Trim();
content = content.Replace(" ", string.Empty);
try
{
int length = content.Length / 2;
int num = 2;
if (content.Length > 0)
{
for (int i = 0; i < length; i++)
{
num = 2 * i;
string tempStr = content.Substring(num, 2);
sb.Append(tempStr);
sb.Append(" ");
}
}
//长度为奇数时追加最后一个字符
int remainder = content.Length % 2;
if (remainder == 1)
{
string tempStr = content.Substring(content.Length - 1, 1);
sb.Append(tempStr);
}
}
catch
{
return;
}

base.Text = sb.ToString().ToUpper();
return;
}
}

#endregion

}

 

时间: 2024-10-29 15:15:51

将输入的字符串分2个字符添加空格并大写格式化的相关文章

java控制台程序-读取输入的字符串,其中文字符变成乱码问题

GBK编码操作系统(如中文win7系统),在编写控制台程序时, 当读取控制台输入含中文的字符串出现乱码时可以通过以下方法解决: 前提:String strInput 保存了由控制台输入的字符串. 解决办法代码: byte[] byteInput = strInput.getBytes("ISO-8859-1"); strInput = new String(byteInput, "GBK"); 这样strInput中的中文字符便可正常.

javascript不用正则验证输入的字符串是否为空(包含空格)

在项目中需要验证输入的字符串是否为空,包括空格,不太喜欢使用正则,所以就想到了js的indexOf函数,indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置,如果要检索的字符串值没有出现,则该方法返回 -1. 语法:stringObject.indexOf(searchvalue,fromindex),searchvalue必需,fromindex:可选参数,在字符串中开始检索的位置.它的合法取值是 0 到 stringObject.length - 1.如省略该参数,则将从

Python中如何计算字符串里面某一个字符出现的次数?

一个突发奇想,想解决一个学习中的行业痛点,让我又再度拾起了Python编程语言的学习. 刚学两天,今天遇到一个题,该题难度不高,但有一点关键点在网上找不到,网上也没有相关的答案,于是我只好千辛万苦地去CSDN.脚本之家上面寻找教程,看文档,最后成功解决了. 题目内容:接受一个由字母和数字组成的字符串,和一个字符,然后输出输入的字符串中含有该字符的个数.不区分大小写. 可以使用以下语句实现字符串s的输入:s=str(input()) 输入格式:输入一个由字母和数字组成的字符串,和一个字符,以空格隔

统计输入任意字符串中字符的个数

1 import java.util.ArrayList; 2 import java.util.HashSet; 3 import java.util.Iterator; 4 import java.util.List; 5 import java.util.Set; 6 7 /** 8 * 9 * @author trfizeng 10 */ 11 public class CountStr { 12 13 //统计任意字符串出现的次数 14 public static List<Strin

输入5个学生的名字(英文),使用冒泡排序按从大到小排序。 提示:涉及到字符串数组,一个字符串是一个一维字符数组;一个 字符串数组就是一个二维字符数组。

#include <stdio.h>#include <string.h> /*输入5个学生的名字(英文),使用冒泡排序按从大到小排序.提示:涉及到字符串数组,一个字符串是一个一维字符数组:一个字符串数组就是一个二维字符数组.*/ void main(){ char stuNames[5][100]; char tmp[100]; int i = 0,j = 0; for(i = 0; i < 5; i++) { printf("请输入第%d个学生的名字:"

java循环练习:输入一个字符串,统计该字符串中分别包含多少个数字,多少个字母,多少个其他字符

package practiceGO; import java.util.Scanner; /*  * 3.输入一个字符串,统计该字符串中分别包含多少个数字,多少个字母,多少个其他字符  */ public class Cto { public static void main(String[] args) {         int englishCount = 0;// 英文字母个数         int spaceCount = 0;// 空格个数         int numCoun

输入一个字符串,求字符的所有排列

#include <iostream> #include <cstring> #include <string> using namespace std; void ComStr(char *str, string &s,int m) { if (m == 0) { cout<<s<<endl; return ; } if (*str != '\0') { s.push_back(*str); ComStr(str+1,s ,m-1);

输入一个字符串,查找出出现次数最多的字符

.输入一个字符串,查找出出现次数最多的字符 1 public static void main(String[] args) { 2 // TODO Auto-generated method stub 3 4 System.out.println("请输入一个字符串:"); 5 String str = new Scanner(System.in).next(); 6 int[] a = new int[127]; 7 char maxChar = 0; 8 int max = 0;

从键盘输入一个字符串,按照字符顺序从小到大进行选择排序,并要求删除重复的字符

/* 从键盘输入一个字符串,按照字符顺序从小到大进行选择排序,并要求删除重复的字符 思路: 选择排序:比较找到最小的下标,和第i个交换位置. 删除重复字符:用k计算不相等的个数,替换. */ #include <stdio.h> #include<string.h> void insetsort(char *str,int n){ int i,j,min,temp,k; char sh[n]; for(i=0;i<n;i++){ min=i; for(j=i+1;j<n