字符串分割
问题描述
输入一个字符串,请按长度为8拆分每个输入字符串并进行输出;
长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。
连续输入字符串(每个字符串长度小于等于100)
思路
- 判断字符串长度是否是8的倍数
- 如果是,直接依次截取8个输出
- 如果不是,给原字符串补0使其成为8的整倍数,再依次截取输出
实现
using System;
public class Program {
public static void Main() {
Console.WriteLine("输入:");
string str = Console.ReadLine();
if (str.Length > 100) {
Console.WriteLine("字符串长度必须小于等于100!!!");
}
else if (str.Length % 8 == 0) {
for (int i = 0; i < str.Length; i = i + 8) {
Console.WriteLine(str.Substring(i, 8));
}
}
else {
for (int m = 8 - str.Length % 8; m > 0; m--) {
str = str + "0"; // 原字符串补0
}
for (int j = 0; j < str.Length; j = j + 8) {
Console.WriteLine(str.Substring(j, 8));
}
}
}
}
所用到的方法
//string.Substring(start,lenght); // 从第start个起,截取lenght个
//例:空格应该被包括
string li = "niceto meetyou";
Console.WriteLine(li.Substring(6,3));
Console.WriteLine(li.Substring(10,2));
//输出结果为 :“o m” "et"
借鉴大佬写法
string.Remove(a,b)
string.Remove(a,b); //从第a个删除,删除b个
即每次截取前八个,截取后删除这8个,直到字符串长度为0
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static System.Console;
namespace ConsoleApp1 {
class Program {
static void Main(string[] args) {
string input = ReadLine();
while (input.Length > 0) {
if (input.Length >= 8) {
WriteLine(input.Substring(0, 8));
input = input.Remove(0, 8);
} else {
WriteLine(input.PadRight(8, '0'));
input = input.Remove(0, input.Length);
}
}
}
}
}
总结
注意几个小点:
- for 循环的终止条件是否需要带等于
- %是取余; / 取商