黑马程序员技术交流社区
标题:
Substring()函数问题
[打印本页]
作者:
黑马-柯校
时间:
2014-3-24 14:29
标题:
Substring()函数问题
本帖最后由 黑马-柯校 于 2014-3-24 15:28 编辑
基础测试里面的一道题目:
页面上有一个文本框,文本框左侧和右侧各有一个按钮,点击左侧按钮文本框中的文字向左循环滚动一次,点击右侧按钮文本框中的文字向右循环滚动一次。
除了通过Substring()函数的方法,是否还有其他方法???
作者:
白夜行
时间:
2014-3-24 15:21
本帖最后由 白夜行 于 2014-3-24 15:33 编辑
你可以先把文本框里的内容ToArray()成字符数组,然后写两个方法循环左移或右移就可以了,点击按钮触发事件就OK了,操作字符串的代码如下:
//向左移动一个字符
public static string MoveLeft(string str)
{
char[] strArray = str.ToArray();
char temp = strArray[0]; //保存第一个字符
for (int i = 1; i < strArray.Length; i++)
{
strArray[i - 1] = strArray[i];
if (i == strArray.Length - 1)
{
strArray[i] = temp;
}
}
return new string(strArray);
}
复制代码
//向右移动一个字符
public static string MoveRight(string str)
{
char[] strArray = str.ToArray();
char temp = strArray[strArray.Length - 1]; //保存最后一个字符
for (int i = strArray.Length - 1; i > 0; i--)
{
strArray = strArray[i - 1];
if (i == 1)
{
strArray[0] = temp;
}
}
return new string(strArray);
}
复制代码
作者:
mdb
时间:
2014-3-24 15:28
用正则表达式,一种奇葩的方法
string s = "abcdefg";
Regex regleft = new Regex(@"^(.)(.*.)$");// 向左
Regex regright = new Regex(@"^(..*)(.)$");// 向右
Match m;
// 向左移
for (int i = 0; i < s.Length; i++)
{
m = regleft.Match(s);
s = m.Groups[2].Value + m.Groups[1].Value;
Console.WriteLine("左移:" + s);
}
s = "abcdefg";
// 向右移
for (int i = 0; i < s.Length; i++)
{
m = regright.Match(s);
s = m.Groups[2].Value + m.Groups[1].Value;
Console.WriteLine("右移:" + s);
}
Console.ReadKey();
复制代码
作者:
hannover2014
时间:
2014-3-24 15:37
学习!!!!
作者:
cancle
时间:
2014-3-24 19:34
额,我也试着做了下,用Winform的Timer组件,分享。。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace 点击按钮滚动
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
bool left;//控制做循环
bool right;//控制右循环
int count;//次数
private void btnLeft_Click(object sender, EventArgs e)//点击左移
{
left = true;
right = false;
count=0;//将count值清零
timer1.Enabled = true;//启用组件
}
private void btnRight_Click(object sender, EventArgs e)//点击右移
{
left = false;
right = true;
count = 0;
timer1.Enabled = true; //启用组件
}
private void Form1_Load(object sender, EventArgs e)//加载窗体
{
textBox1.Text = "请输入你要滚动的文字";
timer1.Enabled = false;//将Timer组件禁用
}
private void timer1_Tick(object sender, EventArgs e)
{
string str = textBox1.Text;
if(left)
{
textBox1.Text = str.Substring(1, str.Length - 1) + str[0];
count++;
}
else if(right)
{
textBox1.Text = str[str.Length - 1] + str.Substring(0, str.Length - 1);
count++;
}
if (count >= textBox1.Text.Length)//当次数大于等于当前文本的长度时
{
timer1.Enabled = false;//将Timer组件禁用
}
}
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2