我正在尝试将字符串转换为数组,然后再将字符串转换回字符串。我试图在C#中实现这一点,但因为我有一段时间没有完成C#我遇到了问题。我用Java创建了以下代码,它工作正常:
String sHtml = "test1\r\ntest2\r\ntest3\r\ntest4\r\ntes5t\r\ntest6\r\ntest7\r\ntest8\r\ntest9\r\ntest10\r\ntest11\r\ntest12\r\ntest13\r\ntes14t\r\n";
int temp = 0;
List<String> emailText = new ArrayList<String>();
for(int x = 0; x<sHtml.length();x++){
if(sHtml.charAt(x)=='\n'){
emailText.add(sHtml.substring(temp, x));
temp = x;
}
}
String testingString="";
for(String words:emailText){
//System.out.println(words);
testingString+=words;
}
System.out.println(testingString);
这在Java中运行良好。以下代码是我对C#的代码:
int temp = 0;
List<string> emailText = new List<string>();
for (int x = 0; x < sHtml.Length; x++)
{
if (sHtml[x].Equals("\\n"))
{
emailText.Add(sHtml.Substring(temp, x));
temp = x;
}
else
{
}
}
string testingString = "";
//sHtml = string.Join("\r\n", emailText.ToArray());
foreach (String word in emailText)
{
testingString += word;
}
Console.WriteLine(testingString);
java代码输出正常但我没有得到C#代码的输出。我有一种感觉我错过了C#代码中的小东西,但我不确定是什么,有人可以帮忙吗?
提前致谢
答案 0 :(得分:2)
您没有在C#中输出,因为您没有输出任何内容:-)如果不添加C#等效项,则省略了Java System.out.println
语句:
Console.WriteLine(testingString);
BTW:一旦用C#代码替换Java代码,你也可以利用.NET框架的功能(正如其他人已经提到的那样)。这样您就可以将程序缩减到一行:
Console.WriteLine(string.Join(string.Empty, sHtml.Split('\n')));
答案 1 :(得分:1)
试试这个:虽然我建议使用字符串构建器来处理更大的字符串,因为它们是不可变的。
string yourString = "this,is,a,example,string";
string newString = "";
string[] array = yourString.Split(',');
foreach (string s in array)
{
newString += s;
}
Console.WriteLine(newString);
答案 2 :(得分:1)
为什么不使用它来分割字符串:
string[] List = sHtml.split("\\n");
这是用字符串的arraylist做某事来做某事:
for (String s in List){
//Do something with each separate String s
}
答案 3 :(得分:1)
为什么不使用拆分和加入?
var arr = str.Split('\n');
var newStr = string.Join("", arr);
答案 4 :(得分:0)
你的'for'循环有两个错误 - 你应该保留字符'\ n'而Java'substring'与.NET'Peltring'没有相同的第二个参数,所以你需要调整:< / p>
for (int x = 0; x < sHtml.Length;x++)
{
if (sHtml[x] == '\n')
{
emailText.Add(sHtml.Substring(temp, x - temp));
temp = x;
}
}