如何替换spark scala列中字符串的每个第一个字符?

如何替换spark scala列中字符串的每个第一个字符?,scala,apache-spark,apache-spark-sql,Scala,Apache Spark,Apache Spark Sql,我有一个数据框,其销售金额以美元符号开头,如$123,我想从整个列中删除此$。我正在这样尝试-> val sale2=sale1.withColumn("SaleAmount", regexp_replace(sale1("SalesAmount"), "$", "")) 输出结果与输入结果相同:$123 请帮忙。提前谢谢 您可以使用substr函数传递起始位置和结束位置,并在数据帧中创建新列,或通过应用转换替换

我有一个数据框,其销售金额以美元符号开头,如
$123
,我想从整个列中删除此
$
。我正在这样尝试->

val sale2=sale1.withColumn("SaleAmount", regexp_replace(sale1("SalesAmount"), "$", "")) 
输出结果与输入结果相同:
$123


请帮忙。提前谢谢

您可以使用
substr
函数传递起始位置和结束位置,并在数据帧中创建新列,或通过应用转换替换数据帧中相同列的值

第一种方法:

//Source data
val df = Seq(("$120"),("$135"),("$4500")).toDF("Value")
//using expr with substr function
import org.apache.spark.sql.functions._
val df1 = df.withColumn("test",expr("substr(Value, 2, length(Value))"))
val df2 = df.withColumn("Test",$"Value".substr(lit(2), length($"Value")-1))
第二种方法:

//Source data
val df = Seq(("$120"),("$135"),("$4500")).toDF("Value")
//using expr with substr function
import org.apache.spark.sql.functions._
val df1 = df.withColumn("test",expr("substr(Value, 2, length(Value))"))
val df2 = df.withColumn("Test",$"Value".substr(lit(2), length($"Value")-1))
在第二种方法中,我们没有对列本身使用
expr
操作

您可以看到如下输出:

使用
replace
替换字符串模式
regexp\u replace
用于替换regex模式,
$
在regex(字符串末尾)中有特殊含义


正则表达式中的
$
表示行尾。要指定文字
$
,请像
\\$
一样对其进行转义。如果只想替换前导的
$
,则模式应为
^\\\$