Scala 转义换行符和制表符

Scala escaping newline and tab characters

我正在尝试使用以下代码去除 url 中的制表符和换行符,但我的输出中仍然有换行符和制表符。需要帮助解决这个问题。

val referrerUrl = Option(event.getPage.getReferrerUrl).getOrElse(blank).replaceAll("\p{C}|\s+|\r$|\\t|\\n|\\r", "")

url可以是

http://www.bing.com/search?q=\tEnergy Source\tFuel (Coal)/Uranium Needed (tons)\tCO2 Emissions \r\n(tons)\tSulfur Dioxide and Other Emissions (tons)\tRadioactivity mSv (millisievert)\tSolid Waste (tons)\tAccidents\r\nQuarter 1\tCoal\t\t\t\t\t\t\r\n\tNuclear\t\t\t\t\t\t\r\nQuarter 2\tCoal\t\t\t\t\t\t\r\n\tNuclear\t\t\t\t\t\t\r\nQuarter 3\tCoal\t\t\t\t\t\t\r\n\tNuclear\t\t\t\t\t\t\r\nQuarter 4\tCoal\t\t\t\t\t\t\r\n\tNuclear\t\t\t\t\t\t\r\n

您的示例代码非常适合我:

scala> val s = "http://www.bing.com/search?q=\tEnergy Source\tFuel (Coal)/Uranium Needed (tons)\tCO2 Emissions \r\n(tons)\tSulfur Dioxide and Other Emissions (tons)\tRadioactivity mSv (millisievert)\tSolid Waste (tons)\tAccidents\r\nQuarter 1\tCoal\t\t\t\t\t\t\r\n\tNuclear\t\t\t\t\t\t\r\nQuarter 2\tCoal\t\t\t\t\t\t\r\n\tNuclear\t\t\t\t\t\t\r\nQuarter 3\tCoal\t\t\t\t\t\t\r\n\tNuclear\t\t\t\t\t\t\r\nQuarter 4\tCoal\t\t\t\t\t\t\r\n\tNuclear\t\t\t\t\t\t\r\n"
scala> s.replaceAll("\p{C}|\s+|\r$|\\t|\\n|\\r", "")
res0: String = http://www.bing.com/search?q=EnergySourceFuel(Coal)/UraniumNeeded(tons)CO2Emissions(tons)SulfurDioxideandOtherEmissions(tons)RadioactivitymSv(millisievert)SolidWaste(tons)AccidentsQuarter1CoalNuclearQuarter2CoalNuclearQuarter3CoalNuclearQuarter4CoalNuclear

三引号有助于清楚起见,因为不处理转义:

scala> s.replaceAll("""\t""", "")
res5: String =
"http://www.bing.com/search?q=Energy SourceFuel (Coal)/Uranium Needed (tons)CO2 Emissions

比较:

scala> s.replaceAll("\\t", "")
res3: String =
"http://www.bing.com/search?q=  Energy Source   Fuel (Coal)/Uranium Needed (tons)       CO2 Emissions

我没有计算反斜杠。