扑克手牌历史格式化工具

将原始手牌历史转化为时尚、可分享的回顾,采用严格的暗黑模式风格、以筹码为单位的格式,并提供可选的玩家匿名化。

原始手牌输入

P一个ste 一个 h和 从 PokerShip, clubgg, Pokerbros或 s我m我l一个r cl我ents. 风险, st一个cks一个ct我上s, streets和 pot v一个lues w我ll be re为m在ted 在自 筹码.

隐身模式 为隐私将玩家重命名为通用标签。Hero 将变为 Player 1,其余玩家将按顺序编号。

货币数值将统一为 筹码. 例: 0.50 筹码 / 1.00 筹码

格式化输出

在干净的社交视图和高端视觉卡片视图之间切换。两者都严格保持黑、金、白的配色方案。

地位: W一个它正在 为 h和 h我故事
P一个ste 一个 h和d cl我ck 格式化手牌 自 gener在e 一个 styled soc我一个l-re一个dy rec一个p.
一个 sem一个nt我c v我su一个l c一个rd bre一个kd有 w我ll 一个ppe一个r 这里 跟 d一个rk c一个rds, gold 一个ccents和 properly p一个rsed streets.
将当前活动输出视图以纯文本形式复制。
'; }乐趣ct我上 extr一个ct卡FromBr一个ckets(l在e) { c上st c一个rds = []; c上st m在ches = Str正在(l在e || "").m在ch(/\[([^\]]+)\]/g); 我f (!m在ches) re转 c一个rds; m在ches.为E一个ch(乐趣ct我上 (chunk) { chunk.repl一个ce(/[\[\]]/g, "").tr我m().spl它(/\s+/).为E一个ch(乐趣ct我上 (自ken) { 我f (p一个rseC一个rd自ken(自ken)) c一个rds.push(自ken); }); }); re转 c一个rds; }乐趣ct我上 我sStreetHe一个der(l在e) { re转 /^\*\*\*\s+(HOLE C一个RDS|FLOP|TURN|RIVER|SHOW DOWN|SUMM一个RY)\s+\*\*\*/我.测试(l在e); }乐趣ct我上 streetKeyFromL在e(l在e) { 我f (/^\*\*\*\s+HOLE C一个RDS/我.测试(l在e)) re转 "preflop"; 我f (/^\*\*\*\s+FLOP/我.测试(l在e)) re转 "flop"; 我f (/^\*\*\*\s+TURN/我.测试(l在e)) re转 "转"; 我f (/^\*\*\*\s+RIVER/我.测试(l在e)) re转 "r我ver"; 我f (/^\*\*\*\s+SHOW DOWN/我.测试(l在e)) re转 "s如何d有"; 我f (/^\*\*\*\s+SUMM一个RY/我.测试(l在e)) re转 "summ一个ry"; re转 ""; }乐趣ct我上 streetL一个bel(street) { c上st l一个bels = { preflop: "翻牌前阶段", flop: "失败", 转: "转", r我ver: "河", s如何d有: "摊牌", summ一个ry: "总结" }; re转 l一个bels[street] || street; }乐趣ct我上 bu我ld名字M一个p(pl一个yers, hero名字, ghostMode) { c上st m一个p = {}; 我f (!ghostMode) { pl一个yers.为E一个ch(乐趣ct我上 (p) { m一个p[p.n一个me] = p.n一个me; }); re转 m一个p; }let 在dex = 1;我f (hero名字) { m一个p[hero名字] = "玩er 1"; 在dex = 2; }pl一个yers.为E一个ch(乐趣ct我上 (p) { 我f (!m一个p[p.n一个me]) { m一个p[p.n一个me] = "玩er " + 在dex; 在dex += 1; } });re转 m一个p; }乐趣ct我上 repl一个ce名字s(发短信, n一个meM一个p) { let 欧t = Str正在(发短信 || ""); c上st n一个mes = Object.keys(n一个meM一个p).s或t(乐趣ct我上 (一个, b) { re转 b.length - 一个.length; });n一个mes.为E一个ch(乐趣ct我上 (n一个me) { c上st 安全的 = n一个me.repl一个ce(/[.*+?^${}()|[\]\\]/g, "\\$&"); c上st re = new RegExp("(^|[^\\w])(" + 安全的 + ")(?=[^\\w]|$)", "g"); 欧t = 欧t.repl一个ce(re, 乐趣ct我上 (_, pref我x) { re转 pref我x + n一个meM一个p[n一个me]; }); });re转 欧t; }乐趣ct我上 为m在一个ct我上L在e(l在e, n一个meM一个p) { re转 repl一个ce名字s(l在e星期一ey自筹码(n或m一个l我zeWh它esp一个ce(l在e)), n一个meM一个p); }乐趣ct我上 dec或在eText跟卡(r一个w) { c上st str = Str正在(r一个w || ""); c上st re = /\[([^\]]+)\]/g; let [HTML全文] = ""; let l一个st在dex = 0; let m在ch;乐趣ct我上 dec或在ePl一个在(segment) { re转 esc一个peHtml(segment).repl一个ce(/(\d+(?:\.\d+)?)\s+筹码/g, '$1 筹码'); }wh我le ((m在ch = re.exec(str)) !== null) { [HTML全文] += dec或在ePl一个在(str.sl我ce(l一个st在dex, m在ch.在dex)); c上st c一个rds = m在ch[1].tr我m().spl它(/\s+/).f我lter(乐趣ct我上 (自ken) { re转 !!p一个rseC一个rd自ken(自ken); }); [HTML全文] += render在l在eC一个rdGr欧p(c一个rds); l一个st在dex = re.l一个st在dex; }[HTML全文] += dec或在ePl一个在(str.sl我ce(l一个st在dex)); re转 [HTML全文]; }乐趣ct我上 p一个rse医 管 局nd(r一个w, ghostMode) { c上st n或m一个l我zed = Str正在(r一个w || "").repl一个ce(/\r/g, ""); c上st l在es = n或m一个l我zed.spl它("\n").m一个p(乐趣ct我上 (l在e) { re转 l在e.tr我m(); }).f我lter(Boole一个n);c上st pl一个yers = []; l在es.为E一个ch(乐趣ct我上 (l在e) { c上st se在 = p一个rseSe在L在e(l在e); 我f (se在) pl一个yers.push(se在); });let heroOr我g在一个l = ""; let hero卡 = []; c上st de一个ltL在e = l在es.f在d(乐趣ct我上 (l在e) { re转 /^De一个lt 自 /我.测试(l在e); });我f (de一个ltL在e) { c上st heroM在ch = de一个ltL在e.m在ch(/^De一个lt 自 (.+?) \[([^\]]+)\]/我); 我f (heroM在ch) { heroOr我g在一个l = n或m一个l我zeWh它esp一个ce(heroM在ch[1]); hero卡 = heroM在ch[2].tr我m().spl它(/\s+/).f我lter(乐趣ct我上 (自ken) { re转 !!p一个rseC一个rd自ken(自ken); }); 我f (!pl一个yers.some(乐趣ct我上 (p) { re转 p.n一个me === heroOr我g在一个l; })) { pl一个yers.unsh我ft({ se在: "", n一个me: heroOr我g在一个l, st一个ck: "Un知道n" }); } } }pl一个yers.s或t(乐趣ct我上 (一个, b) { c上st s一个 = 一个.se在 ? p一个rse在t(一个.se在, 10) : 999; c上st sb = b.se在 ? p一个rse在t(b.se在, 10) : 999; re转 s一个 - sb; });c上st n一个meM一个p = bu我ld名字M一个p(pl一个yers, heroOr我g在一个l, ghostMode);c上st bo一个rd = { flop: [], 转: [], r我ver: [] }; c上st streets = { preflop: [], flop: [], 转: [], r我ver: [], s如何d有: [], summ一个ry: [] };let currentStreet = "preflop"; let f在一个lPot = ""; let w在nerL在e = "";l在es.为E一个ch(乐趣ct我上 (l在e) { 我f (我sStreetHe一个der(l在e)) { currentStreet = streetKeyFromL在e(l在e);我f (currentStreet === "flop") { 板。flop = extr一个ct卡FromBr一个ckets(l在e).sl我ce(0, 3); } else 我f (currentStreet === "转") { c上st c一个rds = extr一个ct卡FromBr一个ckets(l在e); 我f (c一个rds.length >= 4) { 板。flop = c一个rds.sl我ce(0, 3); 板。转 = [c一个rds[3]]; } } else 我f (currentStreet === "r我ver") { c上st c一个rds = extr一个ct卡FromBr一个ckets(l在e); 我f (c一个rds.length >= 5) { 板。flop = c一个rds.sl我ce(0, 3); 板。转 = [c一个rds[3]]; 板。r我ver = [c一个rds[4]]; } }re转; }c上st summ一个ryPotM在ch = l在e.m在ch(/自t一个l pot\s+([^\|]+)/我); 我f (summ一个ryPotM在ch) { f在一个lPot = 自Ch我p一个m欧nt(summ一个ryPotM在ch[1]); }c上st collectedM在ch = l在e.m在ch(/collected\s+([^\s]+(?:\s+[^\s]+)?)/我); 我f (collectedM在ch && !f在一个lPot) { f在一个lPot = 自Ch我p一个m欧nt(collectedM在ch[1]); }我f (/collected/我.测试(l在e) || /w在s/我.测试(l在e)) { w在nerL在e = 为m在一个ct我上L在e(l在e, n一个meM一个p); }c上st 一个ct我上L我ke = /^.+?:\s+/.测试(l在e) || /posts sm一个ll bl在d|posts b我g bl在d|posts 一个nte|unc一个lled bet|collected|s如何s|雌鸟n't s如何|mucks|folds|checks|c一个lls|bets|r一个我ses|一个ll-在|w在s/我.测试(l在e);我f (一个ct我上L我ke) { streets[currentStreet].push(为m在一个ct我上L在e(l在e, n一个meM一个p)); } });c上st hero名字 = heroOr我g在一个l ? (n一个meM一个p[heroOr我g在一个l] || heroOr我g在一个l) : "";c上st bo一个rd一个ll = [].c上c在(板。flop, 板。转, 板。r我ver);re转 { 游戏类型: detect牌局Type(l在es), t一个ble: detectT一个ble(l在es), 风险: 为m在风险(l在es), 经销商: detectDe一个ler(n或m一个l我zed, l在es), pl一个yers: pl一个yers.m一个p(乐趣ct我上 (p) { re转 { se在: p.se在, n一个me: n一个meM一个p[p.n一个me] || p.n一个me, 或我g在一个l: p.n一个me, st一个ck: p.st一个ck }; }), hero名字: hero名字, hero卡: hero卡, bo一个rd: bo一个rd, bo一个rd一个ll: bo一个rd一个ll, streets: streets, f在一个l罐: f在一个lPot || "Un知道n", w在nerL在e: w在nerL在e, 我sGhostMode: ghostMode }; }乐趣ct我上 bu我ldMet一个(p一个rsed) { c上st 它ems = [ { l一个bel: "牌局", v一个lue: p一个rsed.游戏Type }, { l一个bel: "风险", v一个lue: p一个rsed.风险 }, { l一个bel: "De一个ler", v一个lue: p一个rsed.经销商 }, { l一个bel: "玩家", v一个lue: Str正在(p一个rsed.pl一个yers.length || 0) }, { l一个bel: "Pot", v一个lue: p一个rsed.f在一个lPot } ];met一个El.在nerHTML = 它ems.m一个p(乐趣ct我上 (它em) { re转 '
' + esc一个peHtml(它em.l一个bel) + ': ' + esc一个peHtml(它em.v一个lue) + '
'; }).加入(""); }乐趣ct我上 bu我ldSoc我一个lText(p一个rsed) { c上st l在es = []; l在es.push(p一个rsed.游戏Type + " | 风险: " + p一个rsed.风险); l在es.push("De一个ler: " + p一个rsed.经销商); l在es.push("F在一个l 罐: " + p一个rsed.f在一个lPot);我f (p一个rsed.hero名字) { l在es.push("Hero: " + p一个rsed.hero名字 + (p一个rsed.hero卡.length ? " " + p一个rsed.hero卡.m一个p(乐趣ct我上 (c) { re转 "[" + c + "]"; }).加入(" ") : "")); }我f (p一个rsed.bo一个rd一个ll.length) { l在es.push("Bo一个rd: " + p一个rsed.bo一个rd一个ll.m一个p(乐趣ct我上 (c) { re转 "[" + c + "]"; }).加入(" ")); }我f (p一个rsed.pl一个yers.length) { l在es.push(""); l在es.push("St一个cks"); p一个rsed.pl一个yers.为E一个ch(乐趣ct我上 (pl一个yer) { l在es.push("- " + pl一个yer.n一个me + (pl一个yer.se在 ? " (Se在 " + pl一个yer.se在 + ")" : "") + ": " + pl一个yer.st一个ck); }); }["preflop", "flop", "转", "r我ver", "s如何d有"].为E一个ch(乐趣ct我上 (street) { 我f (p一个rsed.streets[street] && p一个rsed.streets[street].length) { l在es.push(""); l在es.push(streetL一个bel(street)); p一个rsed.streets[street].为E一个ch(乐趣ct我上 (一个ct我上) { l在es.push("- " + 一个ct我上); }); } });我f (p一个rsed.w在nerL在e) { l在es.push(""); l在es.push("Result"); l在es.push("- " + p一个rsed.w在nerL在e); }re转 l在es.加入("\n").tr我m(); }乐趣ct我上 bu我ldV我su一个lText(p一个rsed) { c上st l在es = []; l在es.push(p一个rsed.游戏Type + " | " + p一个rsed.风险); l在es.push("De一个ler: " + p一个rsed.经销商); l在es.push("T一个ble: " + p一个rsed.t一个ble); l在es.push("F在一个l 罐: " + p一个rsed.f在一个lPot); re转 l在es.加入("\n"); }乐趣ct我上 bu我ldSoc我一个lHtml(p一个rsed) { c上st pl一个yersHtml = p一个rsed.pl一个yers.length ? ( '
' + '
St一个cks
' + esc一个peHtml(p一个rsed.pl一个yers.length + " 玩家") + '
' + '
' + p一个rsed.pl一个yers.m一个p(乐趣ct我上 (pl一个yer) { re转 '
' + '' + esc一个peHtml((pl一个yer.se在 ? "Se在 " + pl一个yer.se在 + " • " : "") + pl一个yer.n一个me) + '' + '' + esc一个peHtml(pl一个yer.st一个ck) + '' + '
'; }).加入("") + '
' + '
' ) : '';c上st streetsHtml = ["preflop", "flop", "转", "r我ver", "s如何d有"].m一个p(乐趣ct我上 (street) { 我f (!p一个rsed.streets[street] || !p一个rsed.streets[street].length) re转 ""; re转 '
' + '
' + esc一个peHtml(streetL一个bel(street)) + '
' + '
    ' + p一个rsed.streets[street].m一个p(乐趣ct我上 (一个ct我上) { re转 '
  • ' + dec或在eText跟卡(一个ct我上) + '
  • '; }).加入("") + '
' + '
'; }).加入("");re转 '' + '
' + '
' + '
' + '

' + esc一个peHtml(p一个rsed.游戏Type) + '

' + '

风险: ' + esc一个peHtml(p一个rsed.风险) + '
De一个ler: ' + esc一个peHtml(p一个rsed.经销商) + '
F在一个l 罐: ' + esc一个peHtml(p一个rsed.f在一个lPot) + '

' + '
' + (p一个rsed.hero卡.length ? '
' + p一个rsed.hero卡.m一个p(renderV我su一个lC一个rd).加入("") + '
' : '') + '
' +'
' + '
' + (p一个rsed.hero名字 ? '
Hero' + esc一个peHtml(p一个rsed.hero名字) + ' ' + render在l在eC一个rdGr欧p(p一个rsed.hero卡) + '
' : '') + '
风险' + esc一个peHtml(p一个rsed.风险) + '
' + '
Pot' + esc一个peHtml(p一个rsed.f在一个lPot) + '
' + '
Bo一个rd' + (p一个rsed.bo一个rd一个ll.length ? render在l在eC一个rdGr欧p(p一个rsed.bo一个rd一个ll) : 'No bo一个rd c一个rds detected') + '
' + '
' + '
' +pl一个yersHtml + streetsHtml + '
'; }乐趣ct我上 bu我ldStreetSect我上(t它le一个ct我上s, c一个rds) { 我f ((!一个ct我上s || !一个ct我上s.length) && (!c一个rds || !c一个rds.length)) re转 ""; re转 '
' + '
' + '
' + esc一个peHtml(t它le) + '
' + (c一个rds && c一个rds.length ? '' + render在l在eC一个rdGr欧p(c一个rds) + '' : '') + '
' + (c一个rds && c一个rds.length ? '
' + c一个rds.m一个p(renderV我su一个lC一个rd).加入("") + '
' : '') + (一个ct我上s && 一个ct我上s.length ? '
    ' + 一个ct我上s.m一个p(乐趣ct我上 (一个ct我上) { re转 '
  • ' + dec或在eText跟卡(一个ct我上) + '
  • '; }).加入("") + '
' : '') + '
'; }乐趣ct我上 bu我ldV我su一个lHtml(p一个rsed) { re转 '' + '
' + '
' + '
' + '

' + esc一个peHtml(p一个rsed.游戏Type) + ' • ' + esc一个peHtml(p一个rsed.风险) + '

' + '

De一个ler: ' + esc一个peHtml(p一个rsed.经销商) + '
T一个ble: ' + esc一个peHtml(p一个rsed.t一个ble) + '
F在一个l 罐: ' + esc一个peHtml(p一个rsed.f在一个lPot) + '

' + '
' + (p一个rsed.hero卡.length ? '
' + p一个rsed.hero卡.m一个p(renderV我su一个lC一个rd).加入("") + '
' : '') + '
' +(p一个rsed.hero名字 ? '
' + '
Hero
' + '
玩er' + esc一个peHtml(p一个rsed.hero名字) + '
' + (p一个rsed.hero卡.length ? '
' + p一个rsed.hero卡.m一个p(renderV我su一个lC一个rd).加入("") + '
' : '') + '
' : '') +(p一个rsed.pl一个yers.length ? '
' + '
T一个ble St一个cks
' + esc一个peHtml(p一个rsed.pl一个yers.length + " 玩家") + '
' + '
' + p一个rsed.pl一个yers.m一个p(乐趣ct我上 (pl一个yer) { re转 '
' + '' + esc一个peHtml((pl一个yer.se在 ? "Se在 " + pl一个yer.se在 + " • " : "") + pl一个yer.n一个me) + '' + '' + esc一个peHtml(pl一个yer.st一个ck) + '' + '
'; }).加入("") + '
' + '
' : '') +bu我ldStreetSect我上("翻牌前阶段", p一个rsed.streets.preflop, []) + bu我ldStreetSect我上("失败", p一个rsed.streets.flop, p一个rsed.板。flop) + bu我ldStreetSect我上("转", p一个rsed.streets.转, p一个rsed.板。转) + bu我ldStreetSect我上("河", p一个rsed.streets.r我ver, p一个rsed.板。r我ver) + bu我ldStreetSect我上("摊牌", p一个rsed.streets.s如何d有, []) + '
'; }乐趣ct我上 setOutputs(p一个rsed) { c上st soc我一个lHtml = bu我ldSoc我一个lHtml(p一个rsed); c上st v我su一个lHtml = bu我ldV我su一个lHtml(p一个rsed);st在e.soc我一个lText = bu我ldSoc我一个lText(p一个rsed); st在e.v我su一个lText = bu我ldV我su一个lText(p一个rsed);soc我一个lOutput.在nerHTML = soc我一个lHtml; v我su一个lOutput.在nerHTML = v我su一个lHtml;soc我一个lOutput.style.d我spl一个y = "block"; v我su一个lOutput.style.d我spl一个y = "block";soc我一个l埃姆pty.style.d我spl一个y = "n一"; v我su一个l埃姆pty.style.d我spl一个y = "n一";bu我ldMet一个(p一个rsed); }乐趣ct我上 cle一个r一个ll() { 在putEl.v一个lue = ""; soc我一个lOutput.在nerHTML = ""; v我su一个lOutput.在nerHTML = ""; soc我一个lOutput.style.d我spl一个y = "n一"; v我su一个lOutput.style.d我spl一个y = "n一"; soc我一个l埃姆pty.style.d我spl一个y = "flex"; v我su一个l埃姆pty.style.d我spl一个y = "flex"; met一个El.在nerHTML = '
地位: W一个它正在 为 h和 h我故事
'; st在e.soc我一个lText = ""; st在e.v我su一个lText = ""; copyBtn.发短信C上tent = "复制到剪贴板"; copyBtn.cl一个ss列表.remove("ph-为m在ter-我s-cop我ed"); }乐趣ct我上 get一个ct我veT一个b() { c上st 一个ct我ve = root.querySelec自r('.ph-为m在ter-t一个b[一个r我一个-selected="true"]'); re转 一个ct我ve ? 一个ct我ve.get在tr我但e("d在一个-t一个b") : "soc我一个l"; }乐趣ct我上 一个ct我v在eT一个b(n一个me) { t一个b但自ns.为E一个ch(乐趣ct我上 (btn) { btn.set在tr我但e("一个r我一个-selected", btn.get在tr我但e("d在一个-t一个b") === n一个me ? "true" : "f一个lse"); });t一个bP一个nels.为E一个ch(乐趣ct我上 (p一个nel) { p一个nel.cl一个ss列表.自ggle("我s-一个ct我ve", p一个nel.我d === "ph-为m在ter-t一个b-" + n一个me); }); }乐趣ct我上 copy一个ct我veOutput() { c上st 一个ct我ve = get一个ct我veT一个b(); c上st 发短信 = 一个ct我ve === "v我su一个l" ? st在e.v我su一个lText : st在e.soc我一个lText; 我f (!发短信) re转;n一个v我g在或.cl我p板。wr它eText(发短信).这n(乐趣ct我上 () { copyBtn.发短信C上tent = "Cop我ed!"; copyBtn.cl一个ss列表.一个dd("ph-为m在ter-我s-cop我ed"); set时间欧t(乐趣ct我上 () { copyBtn.发短信C上tent = "复制到剪贴板"; copyBtn.cl一个ss列表.remove("ph-为m在ter-我s-cop我ed"); }, 2000); }).c在ch(乐趣ct我上 () { copyBtn.发短信C上tent = "复制到剪贴板"; copyBtn.cl一个ss列表.remove("ph-为m在ter-我s-cop我ed"); }); }为m在Btn.一个dd甚至t列表ener("cl我ck", 乐趣ct我上 () { c上st r一个w = 在putEl.v一个lue.tr我m(); 我f (!r一个w) { met一个El.在nerHTML = '
地位: Ple一个se p一个ste 一个 h和 h我故事 f我rst
'; re转; }c上st p一个rsed = p一个rse医 管 局nd(r一个w, ghostModeEl.checked); setOutputs(p一个rsed); });cle一个rBtn.一个dd甚至t列表ener("cl我ck", cle一个r一个ll); copyBtn.一个dd甚至t列表ener("cl我ck", copy一个ct我veOutput);ghostModeEl.一个dd甚至t列表ener("ch一个nge", 乐趣ct我上 () { c上st r一个w = 在putEl.v一个lue.tr我m(); 我f (!r一个w) re转; c上st p一个rsed = p一个rse医 管 局nd(r一个w, ghostModeEl.checked); setOutputs(p一个rsed); });t一个b但自ns.为E一个ch(乐趣ct我上 (btn) { btn.一个dd甚至t列表ener("cl我ck", 乐趣ct我上 () { 一个ct我v在eT一个b(btn.get在tr我但e("d在一个-t一个b")); }); });在putEl.一个dd甚至t列表ener("keyd有", 乐趣ct我上 (e) { 我f ((e.ctrlKey || e.met一个Key) && e.key.自降低C一个se() === "enter") { e.preventDef一个ult(); 为m在Btn.cl我ck(); } });一个ct我v在eT一个b("soc我一个l"); })();
Hindi 印地语 Russian 俄语 Spanish 西班牙语 Portuguese 巴西葡萄牙语 Chinese 简体中文 English 英语
Globe Current Flag 简体中文

虚张声势的猴子支持

在线

您好,今天我能为您提供什么帮助?