我试图将一个字符串分成两列,但前提是字符串的总长度大于25个字符。如果短于25个字符,那么我只想在第二列。如果长度大于25,那么我希望字符串的第一部分在第1列,第二部分在第2列。这是踢球的人。。。我不想说得支离破碎。所以如果字符串的总长度是26,我知道我需要两列,但是我需要找出在哪里拼接字符串,这样每列中只表示完整的单词。
例如,字符串是“transportation project manager”。因为它有超过25个字符,我希望第一栏写“运输项目”,第二栏写“经理”“交通项目”少于25个字符,但我希望它停止在那里,因为没有另一个完整的字,将适合在25个字符的限制。
另一个例子-字符串是“Casewori”。因为它少于25个字符,所以我希望整个字符串在第2列中表示。
谢谢你的时间!
4条答案
按热度按时间gr8qqesn1#
为了按照定义的最大长度(遵循您描述的逻辑)将字符串拆分为两列,我们将使用bigquery(udf)中的javascript用户定义函数和内置函数length。
首先,将分析字符串。如果最大阈值后的字符是空白,则将按给定的最大字符串长度拆分。但是,如果不是这样,则将检查每个字符,向后计数,直到找到一个空格并拆分字符串。有了这个过程,就避免了函数分解一个单词,而且它总是按照允许的最大长度进行拆分。
下面是一些示例数据的查询,
以及输出,
请注意,有两个javascript udf,这是因为当字符串长度超过25个字符时,第一个返回字符串的第一部分,第二个返回第二部分。另外,允许的最大长度作为参数传递,但可以在udf中静态定义为
len=25
.wh6knrhe2#
我认为你的攻击Angular 应该是在第25个字符之前找到第一个空格,然后以此为基础进行分割。
使用其他提交的答案短语作为样本数据:
我认为使用基本的sql字符串操作可以让您非常接近。你可能需要/想要清理一下,这取决于你是否想要
col2
从一个空格开始,根据你的分界点(你提到的小于25和大于25,但不完全是25)。jvidinwx3#
下面是bigquery标准sql
您可以使用以下示例中的示例数据(在其他答案中很好地提供)来测试、播放上述内容
有输出
注意:如果您想去掉前导(在col2中)和尾随(在col1中)空格,您可以添加trim()来处理这个额外的逻辑
4jb9z9bj4#
哇,这是个很棒的面试问题!我想到的是:
不是很漂亮,但是完成了。