將文本字符串轉換為持續時間你好,
我在將字符串轉換為時間段(持續時間)時遇到問題。
問題之一是字符串中的空格:“天”和“小時”+ 數字之間沒有空格。 分鐘+數字之間有一個空格。
我嘗試使用替代詞來進一步推進,但是當沒有空格時這似乎不起作用。
我也嘗試過使用“文本到列”,但這對我也不起作用。
朱莉
回复:將文本字符串轉換為持續時間天、小時、分鐘……也許,也許不是。 如果您確信數據源模式不會改變,您可以走捷徑。 如果數據的源模式可能發生變化,可能會添加空格,\s* 將在未來允許可選的空格。
這些例子都不太可能處理增加數週的未來來源;他們可能會默默地忽略它。 如果您強制模式從頭到尾匹配,使用 ^ 和 $,如果將來出現意外(數週),您可能會得到缺失值。
Mark 的方法更容易修改以處理數週。 我的方法會更容易添加 ^ 和 $ 來測試意外情況。
我沒有運行 Mark 的示例,但我認為您認為不需要 \D 可能是對的。
編輯:在 Mark 的公式中有三個獨立的正則表達式匹配,它們依賴於數字後面的單詞來獲得正確的數字。 在我的公式中,必須跳過常量文本(天、小時、分鐘)。 使用實際的單詞可以使公式更容易理解。
回复:將文本字符串轉換為持續時間謝謝 - 奏效了。 但是,為了更好地理解這一點:是否有必要在公式中包含“天、小時、分鐘”?
另外,為什麼需要“\D+”而不僅僅是“\d+”?
回复:將文本字符串轉換為持續時間和一個輕微的變化
New Table( "Rec_time",
Add Rows( 8 ),
New Column( "Recording time",
Character,
"Nominal",
Set Values(
{"9days21hours54minutes", " 6 days 21 hours 29 minutes",
"2days 21 hours 24 minutes", "13days 20hours04minutes",
" 9 days 21hours 54 minutes", "9days 21hours 54 minutes",
"9days 21hours 54 minutes", "6days 20hours 39 minutes"}
),
Set Display Width( 240 )
),
New Column( "data",
Numeric,
"Nominal",
Format( ":day:hr:m", 14 ),
Input Format( ":day:hr:m" ),
Formula(
Informat(
Regex(
:Recording time,
"(\d+)\s*days\s*(\d+)\s*hours\s*(\d+)\s*minutes",
":\1:\2:\3"
),
":day:hr:m"
)
)
)
)回复:將文本字符串轉換為持續時間這個案子還算不錯。 我使用了 Regex() 函數。 這是列公式:
Num( Regex( :Recording time, "(\d+)day", "\1" ) ) * In Days( 1 )
+Num( Regex( :Recording time, "\D+(\d+)hour", "\1" ) ) * In Hours( 1 )
+Num( Regex( :Recording time, "\D+(\d+) minute", "\1" ) ) * In Minutes( 1 )
我對數字數據應用了一種 Duration 格式來得到這個結果:

我附上修改後的數據表供您查看。