从字符串到数组再到字符串的C Java问题
我正在尝试将字符串转换为数组,然后再次转换为字符串。我试图用C语言来实现这一点,但由于我已经有一段时间没有用C语言了,所以我遇到了一些问题。我用Java创建了以下代码,效果很好:从字符串到数组再到字符串的C Java问题,java,c#,string,arrays,Java,C#,String,Arrays,我正在尝试将字符串转换为数组,然后再次转换为字符串。我试图用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 t
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代码,但我不知道什么,有人可以帮助吗
提前感谢您尝试一下:尽管我建议对较大的字符串使用字符串生成器,因为它们是不可变的
string yourString = "this,is,a,example,string";
string newString = "";
string[] array = yourString.Split(',');
foreach (string s in array)
{
newString += s;
}
Console.WriteLine(newString);
试试这个:尽管我建议对较大的字符串使用字符串生成器,因为它们是不可变的
string yourString = "this,is,a,example,string";
string newString = "";
string[] array = yourString.Split(',');
foreach (string s in array)
{
newString += s;
}
Console.WriteLine(newString);
您没有在C中获得输出,因为您没有输出任何内容:-您省略了Java System.out.println语句,但没有添加C等价物:
Console.WriteLine(testingString);
顺便说一句:一旦用C代码替换Java代码,您还可以像其他人已经提到的那样利用.NET framework的功能。这样,您可以将程序缩减为一行:
Console.WriteLine(string.Join(string.Empty, sHtml.Split('\n')));
您没有在C中获得输出,因为您没有输出任何内容:-您省略了Java System.out.println语句,但没有添加C等价物:
Console.WriteLine(testingString);
顺便说一句:一旦用C代码替换Java代码,您还可以像其他人已经提到的那样利用.NET framework的功能。这样,您可以将程序缩减为一行:
Console.WriteLine(string.Join(string.Empty, sHtml.Split('\n')));
为什么不用这个来拆分字符串:
string[] List = sHtml.split("\\n");
这是对字符串的arraylist执行的操作:
for (String s in List){
//Do something with each separate String s
}
为什么不用这个来拆分字符串:
string[] List = sHtml.split("\\n");
这是对字符串的arraylist执行的操作:
for (String s in List){
//Do something with each separate String s
}
为什么不使用拆分和联接
var arr = str.Split('\n');
var newStr = string.Join("", arr);
为什么不使用拆分和联接
var arr = str.Split('\n');
var newStr = string.Join("", arr);
“for”循环有2个错误-您应该保留字符“\n”,而Java“substring”的第二个参数与.NET“substring”的第二个参数不同,因此您需要调整:
for (int x = 0; x < sHtml.Length;x++)
{
if (sHtml[x] == '\n')
{
emailText.Add(sHtml.Substring(temp, x - temp));
temp = x;
}
}
“for”循环有2个错误-您应该保留字符“\n”,而Java“substring”的第二个参数与.NET“substring”的第二个参数不同,因此您需要调整:
for (int x = 0; x < sHtml.Length;x++)
{
if (sHtml[x] == '\n')
{
emailText.Add(sHtml.Substring(temp, x - temp));
temp = x;
}
}
if sHtml[x]中有两个斜杠。等于\\n我没有从C代码中获得任何输出,因为您没有打印。在末尾添加Console.WriteLineTestString为什么不改用String.split?您缺少Console.WriteLine语句,对吗?很抱歉,我在复制代码时错过了WriteLine语句。这是一个测试程序,用于确保正确返回文本。总体目标是将html代码传递到字符串sHtml中,然后在换行符处拆分行,然后正确格式化并返回到字符串。如果sHtml[x],则有两个斜杠。等于\\n我没有从C代码获得任何输出,因为您没有打印。在末尾添加Console.WriteLineTestString为什么不改用String.split?您缺少Console.WriteLine语句,对吗?很抱歉,我在复制代码时错过了WriteLine语句。这是一个测试程序,用于确保正确返回文本。总体目标是将html代码传递到字符串sHtml中,然后在换行符处拆分行,然后正确格式化并返回字符串;foreach应该替换为var newString=String.Join,array;最后一行给了我一个错误。但是Console.WriteLinestring.Joinstring.Empty,sHtml.splitnewstring[]{\\n},StringSplitOptions.None;干得好me@deltonio2,你说得对,我的大脑自己的语法检查器还没有完成:-最后一行给了我一个错误。但是Console.WriteLinestring.Joinstring.Empty,sHtml.splitnewstring[]{\\n},StringSplitOptions.None;干得好me@deltonio2,你说得对,我大脑自己的语法检查器还不完整:-