标题: [系统相关] [已解决]批处理中英文字符串长度不一样的问题请教! [打印本页]
作者: jorlaying 时间: 2022-12-21 11:44 标题: [已解决]批处理中英文字符串长度不一样的问题请教!
本帖最后由 jorlaying 于 2022-12-22 12:54 编辑
- @echo off
- set str=12345678
- set str2=一二三四五六七八
- echo %str%
- echo %str2%
- pause & exit /b
复制代码
str和str2同样都是8个字符,结果中文却长一半。
我想知道有没有办法判断字符是英文还是中文?
作者: czjt1234 时间: 2022-12-21 12:40
判断字符是英文还是中文,之后呢,想咋地?
作者: hfxiang 时间: 2022-12-21 13:08
如果只是要计算字串长度,以下大神的帖子就能解决问题(不区分中英文):
http://www.bathome.net/redirect. ... 4946&ptid=11799
如果想判断中英文,只用纯p实现起来将是极为困难
作者: jorlaying 时间: 2022-12-21 13:10
回复 2# czjt1234
截取啊 比如如果是英文 我就截取8个 如果是中文 我就只截取4个
作者: jorlaying 时间: 2022-12-21 13:13
回复 3# hfxiang
计算长度我看了,中文和英文长度一样。不是我想要的
作者: 77七 时间: 2022-12-21 13:47
本帖最后由 77七 于 2022-12-21 13:50 编辑
回复 4# jorlaying
复制代码
这个不是数字吗
不存在中英文混合情况的字符串吗?数字,标点符号等情况呢?
作者: czjt1234 时间: 2022-12-21 14:58
回复 4# jorlaying
abc中国d
这样。四个半的怎么算?
作者: czjt1234 时间: 2022-12-21 15:16
如果要么全是英文要么全是中文,可以用下面这个vbs- s1 = "12345678"
- s2 = "一二三四五六七八"
-
- Set oFSO = CreateObject("Scripting.FileSystemObject")
- Set oWshShell = CreateObject("WScript.Shell")
- s = oWshShell.ExpandEnvironmentStrings("%windir%\System32\CScript.exe")
- If LCase(WScript.FullName) <> LCase(s) Then
- s = s & " /nologo """ & WScript.ScriptFullName & """ "
- For Each i In WScript.Arguments
- If InStr(i, " ") > 0 Then i = """" & i & """"
- s = s & i & " "
- Next
- oWshShell.Run "cmd.exe /k " & Left(s, Len(s) - 1)
- WScript.Quit()
- End If
-
- Wsh.Echo t(s1)
- Wsh.Echo t(s2)
-
- Function t(ByVal s)
- t = Left(s, 2)
- If Asc(s) < 127 Then t = Left(s, 4)
- End Function
复制代码
作者: jorlaying 时间: 2022-12-22 12:53
回复 8# czjt1234
解决了,用echo %str%|findstr "[a-zA-Z0-9]" 谢谢!
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |