我是C#的新手,但是我已经学习Java一年了,发现C#几乎相似。我正在尝试制作一个输出像这样的程序
My
My Name
My Name Is
My Name Is Ahan
我写的程序是这个
class Program
{
static void Main(string[] args)
{
string str1 = "My Name Is Ahan";
int i = 0 , length = str1.Length;
Console.WriteLine(length);
for(; i<length; i++ )
{
char ch = str1[i];
if (ch == ' ')
{
int catchnum = str1.IndexOf(ch);
string displayValue = str1.Substring(0, catchnum);
Console.WriteLine(displayValue);
}
else;
}
Console.ReadLine();
}
}
答案 0 :(得分:2)
像这样吗?
from pyspark.sql import functions as F
df.withColumn("cols", F.explode(F.arrays_zip(F.array("score", "tx_amount", "isValid", "greeting")))) \
.select("id", F.col("cols.*")) \
.withColumnRenamed("0", "col_value")\
.withColumn("text", (F.regexp_extract(F.col("col_value"),"([A-Za-z]+)",1)))\
.withColumn("boolean", F.when((F.col("text")=='true')|(F.col("text")=='false'),F.col("text")).otherwise(F.lit("")))\
.withColumn("text", F.when(F.col("text")==F.col("boolean"), F.lit("")).otherwise(F.col("text")))\
.withColumn("numeric", F.regexp_extract(F.col("col_value"),"([0-9]+)",1))\
.withColumn("is_text", F.when(F.col("text")!="", F.lit("Y")).otherwise(F.lit("N")))\
.withColumn("is_score", F.when(F.col("numeric")<=1, F.lit("Y")).otherwise(F.lit("N")))\
.withColumn("is_amount", F.when(F.col("numeric")>1, F.lit("Y")).otherwise(F.lit("N")))\
.withColumn("is_boolean", F.when(F.col("boolean")!="", F.lit("Y")).otherwise(F.lit("N")))\
.select("id", "col_value","is_score","is_amount","is_boolean","is_text").show()
+---+------------+--------+---------+----------+-------+
| id| col_value|is_score|is_amount|is_boolean|is_text|
+---+------------+--------+---------+----------+-------+
| 1| 0.2| Y| N| N| N|
| 1| 23.78| N| Y| N| N|
| 1| true| N| N| Y| N|
| 1| hello_world| N| N| N| Y|
| 2| 0.6| Y| N| N| N|
| 2| 12.41| N| Y| N| N|
| 2| false| N| N| Y| N|
| 2|byebye_world| N| N| N| Y|
+---+------------+--------+---------+----------+-------+
答案 1 :(得分:1)
我认为您的问题在这里:
int catchnum = str1.IndexOf(ch);
在循环中,您总是会找到 first 空间的索引。找到时,您已经拥有当前当前空间的索引,因此您可以执行以下操作:
if (ch == ' ')
{
string displayValue = str1.Substring(0, i);
Console.WriteLine(displayValue);
}
我还要指出,对于这些基本操作,C#和Java非常相似-相同的代码在Java中的行为相同,只是语法略有不同。当然,通过使用一些基本库函数(例如string.Split
和Linq),代码可能会更简单,这两个平台之间会有所不同,但这不是问题所在。
换句话说,您的错误不是由于Java和C#之间的转换而引起的-它们是在任何编程语言中都会表现出来的基本逻辑错误。