c# - 将多行字符串旋转 90 度 - 行变成列
问题描述
说我有一个字符串
Line 1
Line 2
我想把这根弦顺时针旋转 90 度,这样它就变成了
LL
ii
nn
ee
12
旋转只需执行一次,这样它实际上是“将行变成列”。执行两次应该会给出原始字符串。(如果它真的旋转了 90 度,则必须重复四次才能回到原来的位置。)
解决方案
using System;
using System.Collections;
using System.Collections.Generic;
namespace rotateString
{
class Program
{
static void Main(string[] args)
{
var strings = new string[] { "Line 1", "Line 2" };
var lines = new List<string>();
var done = false;
var j = 0;
do
{
var line = "";
for (var i = 0; i < strings.Length; ++i)
{
var s = strings[i];
if (j >= s.Length)
{
done = true;
break;
}
line += s[j];
}
lines.Add(line);
++j;
} while (!done);
for(int i=0; i < lines.Count; ++i)
{
Console.WriteLine(string.Format("{0} : '{1}'", i, lines[i]));
}
}
}
}
输出:
0 : 'LL'
1 : 'ii'
2 : 'nn'
3 : 'ee'
4 : ' '
5 : '12'
6 : ''
请注意,这几乎假设字符串都是相同的长度。调整它以使用最长的字符串长度是微不足道的。
使用 aStringBuilder
会更有效率,但是除非您使用很多非常长的字符串,否则您永远不会看到性能上的差异。
推荐阅读
- python - 调用“iris.species”和“iris['species']”有什么区别?
- java - 哪段代码初始化“事件源”?
- python - Visual Studio Code 不断为两个模块导入引发未解决的导入错误
- go - 如何正确使用 godoc 生成文档?
- mysql - Magento 2.2.6 到 2.3.2 升级问题
- javascript - 如果有分钟,如何使用时刻格式化为下午 1 点和 1.30 点?
- swift - 在 SwiftUI 应用程序中放置音频播放代码的位置
- php - OctoberCMS 组件导致内存错误
- sapui5 - SAPUI5 从应用程序内部的文件夹中读取 Excel 文件
- javascript - 创建新 div 时如何防止附加键在按钮中不添加额外值